mtk支持
This commit is contained in:
parent
54eb2d0018
commit
73f8d3f699
92
package/mtk/applications/datconf/Makefile
Normal file
92
package/mtk/applications/datconf/Makefile
Normal file
@ -0,0 +1,92 @@
|
||||
#
|
||||
# Copyright (C) 2019
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=datconf
|
||||
PKG_REVISION:=6bb733f7
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_REVISION).tar.bz2
|
||||
PKG_RELEASE:=1
|
||||
PKG_USE_NINJA:=0
|
||||
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
|
||||
|
||||
PKG_MAINTAINER:=Weijie Gao <weijie.gao@mediatek.com>
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(INCLUDE_DIR)/cmake.mk
|
||||
include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
define Package/libkvcutil
|
||||
SECTION:=libs
|
||||
CATEGORY:=Libraries
|
||||
TITLE:=C library for Key-value based config files
|
||||
endef
|
||||
|
||||
define Package/kvcedit
|
||||
SECTION:=util
|
||||
CATEGORY:=Utilities
|
||||
DEPENDS:=+libkvcutil
|
||||
TITLE:=Utility for editing key-value based config files
|
||||
endef
|
||||
|
||||
define Package/datconf
|
||||
SECTION:=MTK Properties
|
||||
CATEGORY:=MTK Properties
|
||||
SUBMENU:=Applications
|
||||
DEPENDS:=+kvcedit
|
||||
TITLE:=Utility for editing dat files used by MediaTek Wi-Fi drivers
|
||||
endef
|
||||
|
||||
define Package/datconf-lua
|
||||
SECTION:=MTK Properties
|
||||
CATEGORY:=MTK Properties
|
||||
SUBMENU:=Applications
|
||||
DEPENDS:=+datconf +liblua
|
||||
TITLE:=Lua plugin for datconf
|
||||
endef
|
||||
|
||||
TARGET_CFLAGS += -I$(STAGING_DIR)/usr/include
|
||||
TARGET_LDFLAGS += -L$(STAGING_DIR)/usr/lib
|
||||
|
||||
CMAKE_OPTIONS = \
|
||||
-DLUAPATH=/usr/lib/lua
|
||||
|
||||
|
||||
define Package/libkvcutil/install
|
||||
$(INSTALL_DIR) $(1)/lib
|
||||
$(CP) $(PKG_BUILD_DIR)/kvcutil/libkvcutil.so* $(1)/lib/
|
||||
endef
|
||||
|
||||
define Package/kvcedit/install
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/kvcutil/kvcedit $(1)/usr/bin/
|
||||
endef
|
||||
|
||||
define Package/datconf/install
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/datconf/datconf $(1)/usr/bin/
|
||||
endef
|
||||
|
||||
define Package/datconf-lua/install
|
||||
$(INSTALL_DIR) $(1)/usr/lib/lua
|
||||
$(CP) $(PKG_BUILD_DIR)/datconf/lua/datconf.so $(1)/usr/lib/lua/
|
||||
endef
|
||||
|
||||
define Build/InstallDev
|
||||
$(INSTALL_DIR) $(1)/usr/include
|
||||
$(CP) $(PKG_BUILD_DIR)/kvcutil/libkvcutil.h $(1)/usr/include
|
||||
$(CP) $(PKG_BUILD_DIR)/datconf/libdatconf.h $(1)/usr/include
|
||||
$(INSTALL_DIR) $(1)/usr/lib
|
||||
$(CP) $(PKG_BUILD_DIR)/kvcutil/libkvcutil.so* $(1)/usr/lib
|
||||
-$(CP) $(PKG_BUILD_DIR)/datconf/libdatconf.a $(1)/usr/lib
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,libkvcutil))
|
||||
$(eval $(call BuildPackage,kvcedit))
|
||||
$(eval $(call BuildPackage,datconf))
|
||||
$(eval $(call BuildPackage,datconf-lua))
|
11
package/mtk/applications/luci-app-eqos-mtk/Makefile
Normal file
11
package/mtk/applications/luci-app-eqos-mtk/Makefile
Normal file
@ -0,0 +1,11 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
LUCI_TITLE:=LuCI support for Easy QoS
|
||||
LUCI_DEPENDS:=+wget-ssl +tc +kmod-sched-core +kmod-ifb +ebtables-legacy-utils +ebtables-legacy @!PACKAGE_luci-app-eqos
|
||||
|
||||
PKG_MAINTAINER:=Jianhui Zhao <jianhuizhao329@gmail.com>
|
||||
PKG_NAME:=luci-app-eqos-mtk
|
||||
|
||||
include $(TOPDIR)/feeds/luci/luci.mk
|
||||
|
||||
# call BuildPackage - OpenWrt buildroot signature
|
@ -0,0 +1,96 @@
|
||||
'use strict';
|
||||
'require form';
|
||||
'require network';
|
||||
'require uci';
|
||||
'require view';
|
||||
|
||||
return view.extend({
|
||||
load: function() {
|
||||
return Promise.all([
|
||||
uci.load('eqos'),
|
||||
network.getHostHints()
|
||||
]);
|
||||
},
|
||||
|
||||
render: function(data) {
|
||||
var m, s, o;
|
||||
|
||||
m = new form.Map('eqos', _('EQoS'),
|
||||
_('Network speed control service.(Compatiable with Mediatek HNAT)'));
|
||||
|
||||
s = m.section(form.NamedSection, 'config', 'eqos');
|
||||
|
||||
o = s.option(form.Flag, 'enabled', _('Enable'));
|
||||
o.default = o.disabled;
|
||||
o.rmempty = false;
|
||||
|
||||
o = s.option(form.Value, 'interface', _('Load balance'),
|
||||
_('Please set a different gateway hop for each network interface before filling in the network interface name. Fill in PPPOE-WAN for dialing and eth1 for DHCP. Leaving it blank to disable it.Please use commas as interface name separators. Example: pppoe-wan,eth1'));
|
||||
o.rmempty = true;
|
||||
|
||||
o = s.option(form.Flag, 'ipv6enabled', _('IPV6Enable'));
|
||||
o.default = o.disabled;
|
||||
o.rmempty = false;
|
||||
|
||||
o = s.option(form.Flag, 'smarthqos', _('SMART_HWQOS'),
|
||||
_('Enabling fair queue will automatically perform hardware offloading for every local host'));
|
||||
o.default = o.disabled;
|
||||
o.rmempty = false;
|
||||
|
||||
o = s.option(form.Value, 'download', _('Download speed (Mbit/s)'),
|
||||
_('Total download bandwidth.'));
|
||||
o.datatype = 'and(uinteger,min(1))';
|
||||
o.rmempty = false;
|
||||
|
||||
o = s.option(form.Value, 'upload', _('Upload speed (Mbit/s)'),
|
||||
_('Total upload bandwidth.'));
|
||||
o.datatype = 'and(uinteger,min(1))';
|
||||
o.rmempty = false;
|
||||
|
||||
|
||||
|
||||
s = m.section(form.TableSection, 'device', _('Speed limit and route choose based on IP address(Auto use hardware QOS)'));
|
||||
s.addremove = true;
|
||||
s.anonymous = true;
|
||||
s.sortable = true;
|
||||
|
||||
o = s.option(form.Flag, 'enabled', _('Enable'));
|
||||
o.default = o.enabled;
|
||||
|
||||
o = s.option(form.Value, 'ip', _('IPV4 address'));
|
||||
o.datatype = 'ip4addr';
|
||||
for (var i of Object.entries(data[1]?.hosts))
|
||||
for (var v in i[1].ipaddrs)
|
||||
if (i[1].ipaddrs[v]) {
|
||||
var ip_addr = i[1].ipaddrs[v], ip_host = i[1].name;
|
||||
o.value(ip_addr, ip_host ? String.format('%s (%s)', ip_host, ip_addr) : ip_addr)
|
||||
}
|
||||
o.rmempty = true;
|
||||
|
||||
var hosts = data[1]?.hosts;
|
||||
o = s.option(form.Value, 'mac', _('IPV6 host'));
|
||||
o.datatype = 'macaddr';
|
||||
Object.keys(hosts).forEach(function(mac) {
|
||||
var hint = hosts[mac].name || L.toArray(hosts[mac].ipaddrs || hosts[mac].ipv4)[0];
|
||||
o.value(mac, hint ? '%s (%s)'.format(mac, hint) : mac);
|
||||
});
|
||||
o.rmempty = true;
|
||||
|
||||
o = s.option(form.Value, 'download', _('Download speed (kbit/s)'));
|
||||
o.datatype = 'and(uinteger,min(0))';
|
||||
o.rmempty = false;
|
||||
|
||||
o = s.option(form.Value, 'upload', _('Upload speed (kbit/s)'));
|
||||
o.datatype = 'and(uinteger,min(0))';
|
||||
o.rmempty = false;
|
||||
|
||||
o = s.option(form.Value, 'comment', _('Comment'));
|
||||
o.rmempty = true;
|
||||
|
||||
o = s.option(form.Value, 'interfacename', _('InterfaceName(start from 0)'));
|
||||
o.datatype = 'and(uinteger,min(0))';
|
||||
o.rmempty = true;
|
||||
|
||||
return m.render();
|
||||
}
|
||||
});
|
@ -0,0 +1,92 @@
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=UTF-8"
|
||||
|
||||
#: package/mtk/applications/luci-app-eqos-mtk/htdocs/luci-static/resources/view/eqos.js:87
|
||||
msgid "Comment"
|
||||
msgstr ""
|
||||
|
||||
#: package/mtk/applications/luci-app-eqos-mtk/htdocs/luci-static/resources/view/eqos.js:40
|
||||
msgid "Download speed (Mbit/s)"
|
||||
msgstr ""
|
||||
|
||||
#: package/mtk/applications/luci-app-eqos-mtk/htdocs/luci-static/resources/view/eqos.js:79
|
||||
msgid "Download speed (kbit/s)"
|
||||
msgstr ""
|
||||
|
||||
#: package/mtk/applications/luci-app-eqos-mtk/htdocs/luci-static/resources/view/eqos.js:18
|
||||
#: package/mtk/applications/luci-app-eqos-mtk/root/usr/share/luci/menu.d/luci-app-eqos.json:3
|
||||
msgid "EQoS"
|
||||
msgstr ""
|
||||
|
||||
#: package/mtk/applications/luci-app-eqos-mtk/htdocs/luci-static/resources/view/eqos.js:23
|
||||
#: package/mtk/applications/luci-app-eqos-mtk/htdocs/luci-static/resources/view/eqos.js:57
|
||||
msgid "Enable"
|
||||
msgstr ""
|
||||
|
||||
#: package/mtk/applications/luci-app-eqos-mtk/htdocs/luci-static/resources/view/eqos.js:36
|
||||
msgid ""
|
||||
"Enabling fair queue will automatically perform hardware offloading "
|
||||
"forwarding for every local host "
|
||||
msgstr ""
|
||||
|
||||
#: package/mtk/applications/luci-app-eqos-mtk/root/usr/share/rpcd/acl.d/luci-app-eqos.json:3
|
||||
msgid "Grant UCI access for luci-app-eqos"
|
||||
msgstr ""
|
||||
|
||||
#: package/mtk/applications/luci-app-eqos-mtk/htdocs/luci-static/resources/view/eqos.js:60
|
||||
msgid "IPV4 address"
|
||||
msgstr ""
|
||||
|
||||
#: package/mtk/applications/luci-app-eqos-mtk/htdocs/luci-static/resources/view/eqos.js:71
|
||||
msgid "IPV6 host"
|
||||
msgstr ""
|
||||
|
||||
#: package/mtk/applications/luci-app-eqos-mtk/htdocs/luci-static/resources/view/eqos.js:31
|
||||
msgid "IPV6Enable"
|
||||
msgstr ""
|
||||
|
||||
#: package/mtk/applications/luci-app-eqos-mtk/htdocs/luci-static/resources/view/eqos.js:91
|
||||
msgid "InterfaceName(start from 0)"
|
||||
msgstr ""
|
||||
|
||||
#: package/mtk/applications/luci-app-eqos-mtk/htdocs/luci-static/resources/view/eqos.js:27
|
||||
msgid "Load balance"
|
||||
msgstr ""
|
||||
|
||||
#: package/mtk/applications/luci-app-eqos-mtk/htdocs/luci-static/resources/view/eqos.js:19
|
||||
msgid "Network speed control service.(Compatiable with Mediatek HNAT)"
|
||||
msgstr ""
|
||||
|
||||
#: package/mtk/applications/luci-app-eqos-mtk/htdocs/luci-static/resources/view/eqos.js:28
|
||||
msgid ""
|
||||
"Please set a different gateway hop for each network interface before filling "
|
||||
"in the network interface name. Fill in PPPOE-WAN for dialing and eth1 for "
|
||||
"DHCP. Leaving it blank to disable it.Please use commas as interface name "
|
||||
"separators. Example: pppoe-wan,eth1"
|
||||
msgstr ""
|
||||
|
||||
#: package/mtk/applications/luci-app-eqos-mtk/htdocs/luci-static/resources/view/eqos.js:35
|
||||
msgid "SMART_HWQOS"
|
||||
msgstr ""
|
||||
|
||||
#: package/mtk/applications/luci-app-eqos-mtk/htdocs/luci-static/resources/view/eqos.js:52
|
||||
msgid ""
|
||||
"Speed limit and route choose based on IP address(using unique comment less "
|
||||
"than 32 will enable hardware QOS)"
|
||||
msgstr ""
|
||||
|
||||
#: package/mtk/applications/luci-app-eqos-mtk/htdocs/luci-static/resources/view/eqos.js:41
|
||||
msgid "Total download bandwidth."
|
||||
msgstr ""
|
||||
|
||||
#: package/mtk/applications/luci-app-eqos-mtk/htdocs/luci-static/resources/view/eqos.js:46
|
||||
msgid "Total upload bandwidth."
|
||||
msgstr ""
|
||||
|
||||
#: package/mtk/applications/luci-app-eqos-mtk/htdocs/luci-static/resources/view/eqos.js:45
|
||||
msgid "Upload speed (Mbit/s)"
|
||||
msgstr ""
|
||||
|
||||
#: package/mtk/applications/luci-app-eqos-mtk/htdocs/luci-static/resources/view/eqos.js:83
|
||||
msgid "Upload speed (kbit/s)"
|
||||
msgstr ""
|
@ -0,0 +1,91 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: LuCi Chinese Translation\n"
|
||||
"Report-Msgid-Bugs-To: \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: Pootle 2.0.6\n"
|
||||
|
||||
#: applications/luci-app-eqos/htdocs/luci-static/resources/view/eqos.js:64
|
||||
msgid "Comment"
|
||||
msgstr "编号"
|
||||
|
||||
#: applications/luci-app-eqos/htdocs/luci-static/resources/view/eqos.js:28
|
||||
msgid "Download speed (Mbit/s)"
|
||||
msgstr "下载速度 (Mbit/s)"
|
||||
|
||||
#: applications/luci-app-eqos/htdocs/luci-static/resources/view/eqos.js:18
|
||||
#: applications/luci-app-eqos/root/usr/share/luci/menu.d/luci-app-eqos.json:3
|
||||
msgid "EQoS"
|
||||
msgstr "网速控制"
|
||||
|
||||
#: applications/luci-app-eqos/htdocs/luci-static/resources/view/eqos.js:24
|
||||
#: applications/luci-app-eqos/htdocs/luci-static/resources/view/eqos.js:43
|
||||
msgid "Enable"
|
||||
msgstr "启用"
|
||||
|
||||
msgid "SMART_HWQOS"
|
||||
msgstr "智能硬件QOS"
|
||||
|
||||
msgid "Enabling fair queue will automatically perform hardware offloading for every local host"
|
||||
msgstr "启用硬件公平队列,局域网的每台设备将拥有相同的转发优先级,保证设备最低网速(仅对dhcp获得ip地址的设备生效,不兼容固定限速)"
|
||||
|
||||
msgid "IPV6Enable"
|
||||
msgstr "同时作用IPV6"
|
||||
|
||||
msgid "Load balance"
|
||||
msgstr "负载均衡"
|
||||
|
||||
msgid "Please set a different gateway hop for each network interface before filling in the network interface name. Fill in PPPOE-WAN for dialing and eth1 for DHCP. Leaving it blank to disable it.Please use commas as interface name separators. Example: pppoe-wan,eth1"
|
||||
msgstr "请先为每个网络接口设置不同的网关跃点后,再填写网络接口名。拨号填写pppoe-wan,DHCP则填写eth1。留空则不启用.请使用逗号作为接口名分隔符.例子:pppoe-wan, eth1"
|
||||
|
||||
#: applications/luci-app-eqos/root/usr/share/rpcd/acl.d/luci-app-eqos.json:3
|
||||
msgid "Grant UCI access for luci-app-eqos"
|
||||
msgstr "授予 luci-app-eqos 访问 UCI 配置的权限"
|
||||
|
||||
#: applications/luci-app-eqos/htdocs/luci-static/resources/view/eqos.js:46
|
||||
msgid "IPV4 address"
|
||||
msgstr "IPV4 地址"
|
||||
|
||||
msgid "IPV6 host"
|
||||
msgstr "IPV6 主机"
|
||||
|
||||
|
||||
msgid "Total download bandwidth."
|
||||
msgstr "总下载带宽。"
|
||||
|
||||
msgid "InterfaceName(start from 0)"
|
||||
msgstr "分流接口序号(从0开始,留空则负载均衡)"
|
||||
|
||||
|
||||
#: applications/luci-app-eqos/htdocs/luci-static/resources/view/eqos.js:19
|
||||
msgid "Network speed control service.(Compatiable with Mediatek HNAT)"
|
||||
msgstr "网速控制服务(未设置限速主机可正常使用硬件加速)。"
|
||||
|
||||
#: applications/luci-app-eqos/htdocs/luci-static/resources/view/eqos.js:38
|
||||
msgid "Speed limit and route choose based on IP address(Auto use hardware QOS)"
|
||||
msgstr "基于 IP 分流限速(自动启用硬件QOS.速度设置为0则取消限速)"
|
||||
|
||||
#: applications/luci-app-eqos/htdocs/luci-static/resources/view/eqos.js:29
|
||||
msgid "Total download bandwidth."
|
||||
msgstr "总下载带宽。"
|
||||
|
||||
#: applications/luci-app-eqos/htdocs/luci-static/resources/view/eqos.js:34
|
||||
msgid "Total upload bandwidth."
|
||||
msgstr "总上传带宽。"
|
||||
|
||||
#: applications/luci-app-eqos/htdocs/luci-static/resources/view/eqos.js:33
|
||||
msgid "Upload speed (Mbit/s)"
|
||||
msgstr "上传速度 (Mbit/s)"
|
||||
|
||||
#: applications/luci-app-eqos/htdocs/luci-static/resources/view/eqos.js:56
|
||||
msgid "Download speed (kbit/s)"
|
||||
msgstr "下载速度 (kbit/s)"
|
||||
|
||||
#: applications/luci-app-eqos/htdocs/luci-static/resources/view/eqos.js:60
|
||||
msgid "Upload speed (kbit/s)"
|
||||
msgstr "上传速度 (kbit/s)"
|
||||
|
@ -0,0 +1,12 @@
|
||||
# The bandwidth unit is Mbit/s
|
||||
config eqos 'config'
|
||||
option enabled 0
|
||||
option download 100
|
||||
option upload 20
|
||||
|
||||
# Limiting the bandwidth of a single Device
|
||||
#config device
|
||||
# option ip "192.168.1.100"
|
||||
# option download 10
|
||||
# option upload 5
|
||||
# option comment 1
|
@ -0,0 +1,3 @@
|
||||
#!/bin/sh
|
||||
|
||||
/etc/init.d/eqos start
|
@ -0,0 +1,103 @@
|
||||
#!/bin/sh
|
||||
|
||||
ACTION=$2
|
||||
MARK_FILE="/tmp/dhcp_mac_mark_mapping" # 存储MAC和MARK映射关系的文件
|
||||
LEASE_FILE="/tmp/dhcp.leases" # DHCP leases 文件
|
||||
MAX_MARK=31 # 限制mark值在1到31之间
|
||||
|
||||
# 定义哈希函数,将MAC地址转化为一个数值,限制在1到31之间
|
||||
hash_mac() {
|
||||
MAC=$1
|
||||
# 将MAC地址中的冒号去掉,转化为十六进制数值,取模限制在1到31之间
|
||||
MAC_HEX=$(echo "$MAC" | sed 's/://g')
|
||||
echo $(( 0x$MAC_HEX % MAX_MARK + 1 ))
|
||||
}
|
||||
|
||||
# 从文件中加载当前的MAC-MARK映射
|
||||
load_mapping() {
|
||||
if [ ! -f "$MARK_FILE" ]; then
|
||||
touch "$MARK_FILE"
|
||||
fi
|
||||
cat "$MARK_FILE"
|
||||
}
|
||||
|
||||
# 检查mark是否被占用
|
||||
is_mark_in_use() {
|
||||
MARK=$1
|
||||
grep -q " $MARK$" "$MARK_FILE"
|
||||
return $?
|
||||
}
|
||||
|
||||
# 分配一个可用的mark
|
||||
allocate_mark() {
|
||||
MAC=$1
|
||||
MARK=$(hash_mac $MAC)
|
||||
retries=0 # 记录重试次数
|
||||
max_retries=$((MAX_MARK - 1)) # 允许的最大重试次数
|
||||
|
||||
# 循环检查mark是否被占用,直到找到可用的mark
|
||||
while is_mark_in_use $MARK; do
|
||||
MARK=$((MARK + 1))
|
||||
retries=$((retries + 1))
|
||||
if [ "$MARK" -gt $MAX_MARK ]; then
|
||||
MARK=1
|
||||
fi
|
||||
# 如果重试次数达到最大值,退出循环,表示无法找到可用的MARK
|
||||
if [ "$retries" -ge "$max_retries" ]; then
|
||||
MARK=1
|
||||
break
|
||||
fi
|
||||
done
|
||||
# 返回可用的MARK
|
||||
echo $MARK
|
||||
}
|
||||
|
||||
# 保存MAC和MARK的映射
|
||||
save_mapping() {
|
||||
MAC=$1
|
||||
MARK=$2
|
||||
echo "$MAC $MARK" >> "$MARK_FILE"
|
||||
}
|
||||
|
||||
# 删除MAC对应的MARK映射
|
||||
delete_mapping() {
|
||||
MAC=$1
|
||||
sed -i "/^$MAC /d" "$MARK_FILE"
|
||||
}
|
||||
|
||||
# 处理现有的DHCP记录,确保已有设备保留其MARK
|
||||
process_existing_leases() {
|
||||
while read -r line; do
|
||||
IP=$(echo "$line" | awk '{print $3}')
|
||||
MAC=$(echo "$line" | awk '{print $2}')
|
||||
EXISTING_MARK=$(grep "^$MAC " "$MARK_FILE" | awk '{print $2}')
|
||||
if [ -z "$EXISTING_MARK" ]; then
|
||||
# 如果没有记录,分配新的MARK
|
||||
MARK_VALUE=$(allocate_mark $MAC)
|
||||
save_mapping $MAC $MARK_VALUE
|
||||
else
|
||||
# 使用现有的MARK
|
||||
MARK_VALUE=$EXISTING_MARK
|
||||
fi
|
||||
idpair=$((MARK_VALUE+32))
|
||||
# 添加iptables规则,基于MAC和IP地址给这个设备打上MARK
|
||||
iptables -t mangle -D eqos -s $IP -j DSCP --set-dscp ${MARK_VALUE}
|
||||
iptables -t mangle -D eqos -d $IP -j DSCP --set-dscp ${idpair}
|
||||
ip6tables -t mangle -D eqos -m mac --mac-source $MAC -j MARK --set-mark ${MARK_VALUE}
|
||||
ebtables -t nat -D eqos -p ipv6 -d $MAC -j mark --mark-set ${idpair}
|
||||
iptables -t mangle -A eqos -s $IP -j DSCP --set-dscp ${MARK_VALUE}
|
||||
iptables -t mangle -A eqos -d $IP -j DSCP --set-dscp ${idpair}
|
||||
ip6tables -t mangle -A eqos -m mac --mac-source $MAC -j MARK --set-mark ${MARK_VALUE}
|
||||
ebtables -t nat -A eqos -A ipv6 -d $MAC -j mark --mark-set ${idpair}
|
||||
done < "$LEASE_FILE"
|
||||
}
|
||||
|
||||
if [ "$ACTION" = "init" ]; then
|
||||
rm /tmp/dhcp_mac_mark_mapping
|
||||
load_mapping
|
||||
iptables -t mangle -F eqos
|
||||
ip6tables -t mangle -F eqos
|
||||
ebtables -t nat -F eqos
|
||||
process_existing_leases
|
||||
fi
|
||||
|
102
package/mtk/applications/luci-app-eqos-mtk/root/etc/init.d/eqos
Normal file
102
package/mtk/applications/luci-app-eqos-mtk/root/etc/init.d/eqos
Normal file
@ -0,0 +1,102 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
# Copyright (C) 2006 OpenWrt.org
|
||||
|
||||
START=50
|
||||
USE_PROCD=1
|
||||
|
||||
parse_device() {
|
||||
local cfg="$1"
|
||||
|
||||
local enabled
|
||||
config_get_bool enabled "$cfg" "enabled" "1"
|
||||
[ "$enabled" -eq "1" ] || return 1
|
||||
|
||||
|
||||
local ip download upload comment mac interfacename
|
||||
config_get ip "$cfg" ip
|
||||
config_get download "$cfg" "download"
|
||||
config_get upload "$cfg" "upload"
|
||||
config_get comment "$cfg" "comment"
|
||||
config_get mac "$cfg" "mac"
|
||||
config_get interfacename "$cfg" "interfacename"
|
||||
eqos add "$ip" "$download" "$upload" "$comment" "$mac" "$interfacename"
|
||||
}
|
||||
|
||||
start_service() {
|
||||
config_load "eqos"
|
||||
|
||||
local enabled
|
||||
config_get_bool enabled "config" "enabled" "0"
|
||||
[ "$enabled" -eq "1" ] || return 1
|
||||
|
||||
local download upload comment
|
||||
config_get download "config" "download"
|
||||
config_get upload "config" "upload"
|
||||
config_get comment "config" "comment"
|
||||
config_get smarthqos "config" "smarthqos"
|
||||
config_get interface "config" "interface"
|
||||
eqos start "$download" "$upload" "$comment"
|
||||
|
||||
local ipv6enabled
|
||||
config_get_bool ipv6enabled "config" "ipv6enabled" "0"
|
||||
ip6tables -t mangle -N eqos
|
||||
ip6tables -t mangle -F eqos
|
||||
ebtables -t nat -N eqos
|
||||
ebtables -t nat -F eqos
|
||||
if [ "$ipv6enabled" -eq "1" ]; then
|
||||
ebtables -t nat -D POSTROUTING -j eqos -p ipv6
|
||||
ebtables -t nat -A POSTROUTING -j eqos -p ipv6
|
||||
ip6tables -t mangle -D FORWARD -j eqos
|
||||
ip6tables -t mangle -A FORWARD -j eqos
|
||||
fi
|
||||
|
||||
if [ "$smarthqos" -eq "1" ]; then
|
||||
for i in $(seq 1 31); do
|
||||
if [ "$upload" -ne "0" ]; then
|
||||
echo 2 1 $(($upload*225)) 1 $(($upload*1000)) 4 1 > /sys/kernel/debug/hnat/qdma_txq$i
|
||||
fi
|
||||
done
|
||||
for i in $(seq 33 63); do
|
||||
if [ "$download" -ne "0" ]; then
|
||||
echo 3 1 $(($download*200)) 1 $(($download*1000)) 4 1 > /sys/kernel/debug/hnat/qdma_txq$i
|
||||
fi
|
||||
done
|
||||
fi
|
||||
iptables -t mangle -F PREROUTING
|
||||
if [ $interface ]; then
|
||||
bash /usr/sbin/loadbalance "$interface"
|
||||
fi
|
||||
config_foreach parse_device "device"
|
||||
if [ "$smarthqos" -eq "1" ]; then
|
||||
rm /etc/hotplug.d/dhcp/99-eqos
|
||||
cat << 'EOF' > /etc/hotplug.d/dhcp/99-eqos
|
||||
#!/bin/sh
|
||||
|
||||
# 只有在新增 DHCP 租约时才执行操作
|
||||
if [ "$ACTION" = "add" ]; then
|
||||
|
||||
# 执行指定的命令
|
||||
/etc/init.d/dhcp_mark.sh eqos init
|
||||
fi
|
||||
EOF
|
||||
|
||||
chmod +x /etc/hotplug.d/dhcp/99-eqos
|
||||
/etc/init.d/dnsmasq restart
|
||||
/etc/init.d/dhcp_mark.sh eqos init
|
||||
fi
|
||||
}
|
||||
|
||||
stop_service() {
|
||||
eqos stop
|
||||
iptables -t mangle -F PREROUTING
|
||||
rm /etc/hotplug.d/dhcp/99-eqos
|
||||
}
|
||||
|
||||
reload_service() {
|
||||
stop
|
||||
start
|
||||
}
|
||||
|
||||
service_triggers() {
|
||||
procd_add_reload_trigger "eqos"
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
#!/bin/sh
|
||||
|
||||
uci -q batch <<-EOF >/dev/null
|
||||
delete ucitrack.@eqos[-1]
|
||||
add ucitrack eqos
|
||||
EOF
|
||||
|
||||
rm -f /tmp/luci-indexcache
|
||||
exit 0
|
187
package/mtk/applications/luci-app-eqos-mtk/root/usr/sbin/eqos
Normal file
187
package/mtk/applications/luci-app-eqos-mtk/root/usr/sbin/eqos
Normal file
@ -0,0 +1,187 @@
|
||||
#!/bin/sh
|
||||
|
||||
dev=br-lan
|
||||
hash_file="/tmp/hash_records.txt"
|
||||
|
||||
generate_index() {
|
||||
local input="$1"
|
||||
local hash_value=$(echo -n "$input" | md5sum | cut -d' ' -f1)
|
||||
local decimal_value=$((0x${hash_value:0:8}))
|
||||
local index=$((decimal_value % 31 + 1))
|
||||
echo $index
|
||||
}
|
||||
|
||||
find_available_index() {
|
||||
local base_index=$(generate_index "$1")
|
||||
local index=$base_index
|
||||
|
||||
while true; do
|
||||
if grep -q "^$index$" "$hash_file"; then
|
||||
index=$((index % 31 + 1))
|
||||
if [[ $index -eq $base_index ]]; then
|
||||
echo "All slots are full. Returning 0."
|
||||
return 0
|
||||
fi
|
||||
else
|
||||
echo $index >> "$hash_file"
|
||||
echo $index
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
}
|
||||
stop_qos() {
|
||||
tc qdisc del dev $dev root 2>/dev/null
|
||||
tc qdisc del dev $dev ingress 2>/dev/null
|
||||
tc qdisc del dev ${dev}-ifb root 2>/dev/null
|
||||
ip link del dev ${dev}-ifb 2>/dev/null
|
||||
}
|
||||
|
||||
start_qos() {
|
||||
local dl=$1
|
||||
local up=$2
|
||||
rm /tmp/hash_records.txt
|
||||
touch "$hash_file"
|
||||
tc qdisc add dev $dev root handle 1: htb
|
||||
tc class add dev $dev parent 1: classid 1:1 htb rate ${dl}mbit
|
||||
|
||||
ip link add dev ${dev}-ifb name ${dev}-ifb type ifb
|
||||
ip link set dev ${dev}-ifb up
|
||||
|
||||
tc qdisc add dev ${dev}-ifb root handle 1: htb
|
||||
tc class add dev ${dev}-ifb parent 1: classid 1:1 htb rate ${up}mbit
|
||||
|
||||
tc qdisc add dev $dev ingress
|
||||
tc filter add dev $dev parent ffff: protocol ip u32 match u32 0 0 flowid 1:1 action mirred egress redirect dev ${dev}-ifb
|
||||
}
|
||||
|
||||
iptables_stop() {
|
||||
iptables -t mangle -D FORWARD -j eqos
|
||||
ip6tables -t mangle -D FORWARD -j eqos
|
||||
ebtables -t nat -D POSTROUTING -j eqos -p ipv6
|
||||
echo 0 > /sys/kernel/debug/hnat/qos_toggle
|
||||
sed -i '/\/etc\/init.d\/eqos start/d' /etc/firewall.user
|
||||
iptables -t mangle -D FORWARD -i br-lan -j DSCP --set-dscp 0
|
||||
iptables -t mangle -D FORWARD -o br-lan -j DSCP --set-dscp 0
|
||||
ip6tables -t mangle -D FORWARD -i br-lan -j DSCP --set-dscp 0
|
||||
ip6tables -t mangle -D FORWARD -o br-lan -j DSCP --set-dscp 0
|
||||
echo "10 0" > /sys/kernel/debug/hnat/hnat_setting
|
||||
echo "11 30" >/sys/kernel/debug/hnat/hnat_setting
|
||||
for i in $(seq 0 31); do
|
||||
echo 0 0 0 0 0 4 4 > /sys/kernel/debug/hnat/qdma_txq$i
|
||||
done
|
||||
for i in $(seq 32 63); do
|
||||
echo 1 0 0 0 0 4 4 > /sys/kernel/debug/hnat/qdma_txq$i
|
||||
done
|
||||
echo 0 wrr 25000000 > /sys/kernel/debug/hnat/qdma_sch0
|
||||
echo 0 wrr 25000000 > /sys/kernel/debug/hnat/qdma_sch1
|
||||
echo 0 wrr 25000000 > /sys/kernel/debug/hnat/qdma_sch2
|
||||
echo 0 wrr 25000000 > /sys/kernel/debug/hnat/qdma_sch3
|
||||
}
|
||||
|
||||
iptables_start_prepare() {
|
||||
iptables -t mangle -D FORWARD -i br-lan -j DSCP --set-dscp 0
|
||||
iptables -t mangle -D FORWARD -o br-lan -j DSCP --set-dscp 0
|
||||
iptables -t mangle -A FORWARD -i br-lan -j DSCP --set-dscp 0
|
||||
iptables -t mangle -A FORWARD -o br-lan -j DSCP --set-dscp 0
|
||||
ip6tables -t mangle -D FORWARD -i br-lan -j DSCP --set-dscp 0
|
||||
ip6tables -t mangle -D FORWARD -o br-lan -j DSCP --set-dscp 0
|
||||
ip6tables -t mangle -A FORWARD -i br-lan -j DSCP --set-dscp 0
|
||||
ip6tables -t mangle -A FORWARD -o br-lan -j DSCP --set-dscp 0
|
||||
}
|
||||
|
||||
iptables_start_inital() {
|
||||
iptables -t mangle -N eqos
|
||||
iptables -t mangle -F eqos
|
||||
iptables -t mangle -D FORWARD -j eqos
|
||||
iptables -t mangle -A FORWARD -j eqos
|
||||
echo 1 > /sys/kernel/debug/hnat/qos_toggle
|
||||
echo 0 wrr 25000000 > /sys/kernel/debug/hnat/qdma_sch0
|
||||
echo 0 wrr 25000000 > /sys/kernel/debug/hnat/qdma_sch1
|
||||
echo 0 0 0 0 0 0 0 > /sys/kernel/debug/hnat/qdma_txq0
|
||||
echo 1 0 0 0 0 0 0 > /sys/kernel/debug/hnat/qdma_txq32
|
||||
echo "11 5" >/sys/kernel/debug/hnat/hnat_setting
|
||||
uci -q set "turboacc.config.fastpath_mh_eth_hnat_bind_rate"="5"
|
||||
uci -q commit "turboacc"
|
||||
sed -i '/\/etc\/init.d\/eqos start/d' /etc/firewall.user
|
||||
echo "/etc/init.d/eqos start" >> /etc/firewall.user
|
||||
echo "10 1" > /sys/kernel/debug/hnat/hnat_setting
|
||||
}
|
||||
|
||||
|
||||
case "$1" in
|
||||
"stop")
|
||||
stop_qos
|
||||
iptables_stop
|
||||
;;
|
||||
"start")
|
||||
stop_qos
|
||||
iptables_start_prepare
|
||||
start_qos $2 $3
|
||||
iptables_start_inital
|
||||
echo 1 wrr $(($3*1000)) > /sys/kernel/debug/hnat/qdma_sch2
|
||||
echo 1 wrr $(($2*1000)) > /sys/kernel/debug/hnat/qdma_sch3
|
||||
;;
|
||||
"add")
|
||||
ip="$2"
|
||||
dl="$3"
|
||||
up="$4"
|
||||
macaddr="$6"
|
||||
cnt=$(tc class show dev $dev | wc -l)
|
||||
|
||||
interface="$7"
|
||||
if [ -n "$ip" ]; then
|
||||
id="$(find_available_index "$ip")"
|
||||
elif [ -n "$macaddr" ]; then
|
||||
id="$(find_available_index "$macaddr")"
|
||||
fi
|
||||
idpair=$((id+32))
|
||||
if [ $id -lt 32 ]; then
|
||||
iptables -t mangle -D eqos -s $ip -j DSCP --set-dscp ${id}
|
||||
iptables -t mangle -D eqos -d $ip -j DSCP --set-dscp ${idpair}
|
||||
ip6tables -t mangle -D eqos -m mac --mac-source $macaddr -j MARK --set-mark ${id}
|
||||
ebtables -t nat -D eqos -p ipv6 -d $macaddr -j mark --mark-set ${idpair}
|
||||
if [ $up -ne 0 ]; then
|
||||
echo 2 0 0 1 ${up} 4 1 > /sys/kernel/debug/hnat/qdma_txq${id}
|
||||
iptables -t mangle -A eqos -s $ip -j DSCP --set-dscp ${id}
|
||||
ip6tables -t mangle -A eqos -m mac --mac-source $macaddr -j MARK --set-mark ${id}
|
||||
fi
|
||||
if [ $dl -ne 0 ]; then
|
||||
echo 3 0 0 1 ${dl} 4 1 > /sys/kernel/debug/hnat/qdma_txq${idpair}
|
||||
iptables -t mangle -A eqos -d $ip -j DSCP --set-dscp ${idpair}
|
||||
ebtables -t nat -A eqos -p ipv6 -d $macaddr -j mark --mark-set ${idpair}
|
||||
fi
|
||||
else
|
||||
iptables -t mangle -D eqos -s $ip -j MARK --set-mark 0x99
|
||||
iptables -t mangle -D eqos -d $ip -j MARK --set-mark 0x99
|
||||
if [ $up -ne 0 ]; then
|
||||
iptables -t mangle -A eqos -s $ip -j MARK --set-mark 0x99
|
||||
fi
|
||||
if [ $dl -ne 0 ]; then
|
||||
iptables -t mangle -A eqos -d $ip -j MARK --set-mark 0x99
|
||||
fi
|
||||
fi
|
||||
if [ $id -gt 31 ]; then
|
||||
tc class add dev $dev parent 1:1 classid 1:1$cnt htb rate ${dl}kbit ceil ${dl}kbit
|
||||
tc filter add dev $dev parent 1:0 protocol ip u32 match ip dst $ip flowid 1:1$cnt
|
||||
|
||||
tc class add dev ${dev}-ifb parent 1:1 classid 1:1$cnt htb rate ${up}kbit ceil ${up}kbit
|
||||
tc filter add dev ${dev}-ifb parent 1:0 protocol ip u32 match ip src $ip flowid 1:1$cnt
|
||||
fi
|
||||
if [ $interface ]; then
|
||||
iptables -t mangle -D PREROUTING -s $ip -m conntrack --ctstate NEW -j MARK --set-mark 2"$interface"
|
||||
iptables -t mangle -A PREROUTING -s $ip -m conntrack --ctstate NEW -j MARK --set-mark 2"$interface"
|
||||
iptables -t mangle -D PREROUTING -i br-lan -m conntrack --ctstate ESTABLISHED,RELATED -j CONNMARK --restore-mark
|
||||
iptables -t mangle -A PREROUTING -i br-lan -m conntrack --ctstate ESTABLISHED,RELATED -j CONNMARK --restore-mark
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 <command> [options]"
|
||||
echo "Commands:"
|
||||
echo " start dl_rate up_rate #Total bandwidth (Mbit/s)"
|
||||
echo " stop"
|
||||
echo " add ip dl_rate up_rate #Limiting the bandwidth of a single IP (kbit/s)"
|
||||
echo "Example:"
|
||||
echo " $0 start 30 20 # Total bandwidth: down 30Mbit/s up 20Mbit/s"
|
||||
echo " $0 add 192.168.22.12 10 2 # down 10kbit/s up 2kbit/s"
|
||||
;;
|
||||
esac
|
@ -0,0 +1,45 @@
|
||||
interface=$1
|
||||
array=(${interface//,/ })
|
||||
PPP_NUM=0
|
||||
|
||||
for var in ${array[@]}
|
||||
do
|
||||
let PPP_NUM=PPP_NUM+1
|
||||
done
|
||||
|
||||
i=0
|
||||
for var in ${array[@]}
|
||||
do
|
||||
ipaddr=$(ip route show |grep default | grep $var | awk '{print $3 }')
|
||||
iptables -t mangle -D PREROUTING -i br-lan -m conntrack --ctstate NEW -m statistic --mode nth --every $PPP_NUM --packet $i -j CONNMARK --set-mark 2"$i"
|
||||
iptables -t mangle -D PREROUTING -i br-lan -m connmark --mark 2"$i" -j MARK --set-mark 2"$i"
|
||||
iptables -t mangle -A PREROUTING -i br-lan -m conntrack --ctstate NEW -m statistic --mode nth --every $PPP_NUM --packet $i -j CONNMARK --set-mark 2"$i"
|
||||
iptables -t mangle -A PREROUTING -i br-lan -m connmark --mark 2"$i" -j MARK --set-mark 2"$i"
|
||||
ip rule del table 2"$i"0
|
||||
ip rule add fwmark 2"$i" table 2"$i"0
|
||||
ip route del default table 2"$i"0
|
||||
ip route add default via $ipaddr dev $var table 2"$i"0
|
||||
let i=i+1
|
||||
done
|
||||
|
||||
|
||||
i=0
|
||||
for var in ${array[@]}
|
||||
do
|
||||
ipaddr=$(ip route show |grep default | grep $var | awk '{print $3 }')
|
||||
iptables -t mangle -D PREROUTING -m conntrack --ctstate NEW -d $ipaddr/24 -j MARK --set-mark 2"$i"
|
||||
iptables -t mangle -A PREROUTING -m conntrack --ctstate NEW -d $ipaddr/24 -j MARK --set-mark 2"$i"
|
||||
let i=i+1
|
||||
done
|
||||
|
||||
iptables -t mangle -D PREROUTING -p tcp --dport 443 -m conntrack --ctstate NEW -j MARK --set-mark 20
|
||||
iptables -t mangle -A PREROUTING -p tcp --dport 443 -m conntrack --ctstate NEW -j MARK --set-mark 20
|
||||
|
||||
iptables -t mangle -D PREROUTING -p udp --dport 443 -m conntrack --ctstate NEW -j MARK --set-mark 20
|
||||
iptables -t mangle -A PREROUTING -p udp --dport 443 -m conntrack --ctstate NEW -j MARK --set-mark 20
|
||||
|
||||
iptables -t mangle -D POSTROUTING -m conntrack --ctstate NEW -j CONNMARK --save-mark
|
||||
iptables -t mangle -A POSTROUTING -m conntrack --ctstate NEW -j CONNMARK --save-mark
|
||||
iptables -t mangle -D PREROUTING -i br-lan -m conntrack --ctstate ESTABLISHED,RELATED -j CONNMARK --restore-mark
|
||||
iptables -t mangle -A PREROUTING -i br-lan -m conntrack --ctstate ESTABLISHED,RELATED -j CONNMARK --restore-mark
|
||||
ip route flush cache
|
@ -0,0 +1,13 @@
|
||||
{
|
||||
"admin/network/eqos": {
|
||||
"title": "EQoS",
|
||||
"action": {
|
||||
"type": "view",
|
||||
"path": "eqos"
|
||||
},
|
||||
"depends": {
|
||||
"acl": [ "luci-app-eqos" ],
|
||||
"uci": { "eqos": true }
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
{
|
||||
"luci-app-eqos": {
|
||||
"description": "Grant UCI access for luci-app-eqos",
|
||||
"read": {
|
||||
"uci": [ "eqos" ]
|
||||
},
|
||||
"write": {
|
||||
"uci": [ "eqos" ]
|
||||
}
|
||||
}
|
||||
}
|
15
package/mtk/applications/luci-app-mtk/Makefile
Normal file
15
package/mtk/applications/luci-app-mtk/Makefile
Normal file
@ -0,0 +1,15 @@
|
||||
#
|
||||
# Copyright (C) Hua Shao <nossiac@163.com>
|
||||
#
|
||||
# This is free software, licensed under the Apache License, Version 2.0 .
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
LUCI_TITLE:=MediaTek Proprietary Configuration.
|
||||
LUCI_DEPENDS:=+datconf-lua
|
||||
LUCI_PKGARCH:=all
|
||||
|
||||
include $(TOPDIR)/feeds/luci/luci.mk
|
||||
|
||||
# call BuildPackage - OpenWrt buildroot signature
|
198
package/mtk/applications/luci-app-mtk/NOTICE
Normal file
198
package/mtk/applications/luci-app-mtk/NOTICE
Normal file
@ -0,0 +1,198 @@
|
||||
Copyright (C) 2016 Gion Kunz
|
||||
|
||||
The MIT License
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
|
||||
documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
|
||||
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit
|
||||
persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
|
||||
Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
|
||||
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
|
||||
Copyright 2008 Steven Barth <steven@midlink.org>
|
||||
Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
1421
package/mtk/applications/luci-app-mtk/luasrc/controller/mtkwifi.lua
Normal file
1421
package/mtk/applications/luci-app-mtk/luasrc/controller/mtkwifi.lua
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,67 @@
|
||||
<%#
|
||||
File name : mtk_wifi_apply_reboot.htm
|
||||
This file is used in WebUI based on LuCI to handle the reboot event.
|
||||
%>
|
||||
<%+header%>
|
||||
<h2><a>Reboot Device</a><h2>
|
||||
<div id="div_reboot_warn">
|
||||
<p class="alert-message">
|
||||
As the driver does not support addition or deletion of interfaces on the fly,
|
||||
the settings which were changed during addition or deletion of interfaces have not been applied yet!
|
||||
<br /><br />
|
||||
<strong>
|
||||
The changed settings will be applied only after reboot of the device.
|
||||
Please click on the Reboot button.
|
||||
</strong>
|
||||
<br /><br />
|
||||
<strong>Tip:</strong><br />
|
||||
Add or delete as many interfaces as required before reboot so that you do not have to reboot the device again.<br />
|
||||
Please follow below instructions to add or delete an interface;</em><br />
|
||||
1. Go to <a href='<%=luci.dispatcher.build_url("admin", "network", "wifi")%>'>Wireless Overview</a> web-page.<br />
|
||||
2. Click on Add button to add a new interface or click on Remove button to delete an existing interface.<br />
|
||||
3. If you are are adding a new interface, then, click on <em>Save</em> button after filling out all the required fields such as SSID etc.<br />
|
||||
4. Once you are done with addition/deletion of interfaces, then please click on <em>Reload</em> button or
|
||||
<em>Save and Apply</em> button on any web-page which will redirect to this web-page to perform the reboot of the device.</br>
|
||||
</p>
|
||||
<input class="cbi-button cbi-button-apply" type="button" value="Reboot" onclick="init_reboot()" />
|
||||
</div>
|
||||
<h4 id="msg_on_reboot" class="alert-message warning" style="display:none">
|
||||
<img src="<%=resource%>/icons/loading.gif" alt="" style="vertical-align:middle" />
|
||||
Please wait while the reboot of the device is on progress.
|
||||
</h4>
|
||||
<h4 id="unreach_msg" class="alert-message error" style="display:none">Device has not come on-line yet!</h4>
|
||||
<script type="text/javascript">
|
||||
function online()
|
||||
{
|
||||
location = '<%=controller%>';
|
||||
}
|
||||
|
||||
function ping(numPings)
|
||||
{
|
||||
var loadingImg = document.createElement('IMG');
|
||||
loadingImg.onload = online;
|
||||
loadingImg.src = '<%=resource%>/icons/loading.gif?' + Math.random();
|
||||
numPings -= 1;
|
||||
if(numPings <= 0){
|
||||
document.getElementById("msg_on_reboot").style.display = 'none';
|
||||
document.getElementById("unreach_msg").style.display = '';
|
||||
}
|
||||
else{
|
||||
window.setTimeout(ping, 10000, numPings);
|
||||
}
|
||||
}
|
||||
|
||||
function init_reboot_cb()
|
||||
{
|
||||
window.setTimeout(ping, 10000, 18);
|
||||
}
|
||||
|
||||
function init_reboot()
|
||||
{
|
||||
document.getElementById('div_reboot_warn').style.display = 'none';
|
||||
document.getElementById('msg_on_reboot').style.display = '';
|
||||
(new XHR()).post('<%=controller%>/admin/mtk/wifi/reboot', { token: '<%=token%>' }, init_reboot_cb);
|
||||
}
|
||||
|
||||
</script>
|
||||
<%+footer%>
|
@ -0,0 +1,233 @@
|
||||
<%+header%>
|
||||
<!--
|
||||
This module is a demo to configure MTK' proprietary WiFi driver.
|
||||
Basic idea is to bypass uci and edit wireless profile (mt76xx.dat) directly.
|
||||
LuCI's WiFi configuration is more logical and elegent, but it's quite tricky to
|
||||
translate uci into MTK's WiFi profile (like we did in "uci2dat").
|
||||
|
||||
Hua Shao <nossiac@163.com>
|
||||
-->
|
||||
|
||||
<%
|
||||
local disp = require "luci.dispatcher"
|
||||
-- local request = disp.context.path
|
||||
local request = disp.context.request
|
||||
local mtkwifi = require("mtkwifi")
|
||||
local devname = request[5]
|
||||
local devs = mtkwifi.get_all_devs()
|
||||
local dev = {}
|
||||
for _,v in ipairs(devs) do
|
||||
if v.devname == devname then
|
||||
dev = v
|
||||
end
|
||||
end
|
||||
local cfgs = mtkwifi.load_profile(dev.profile)
|
||||
%>
|
||||
|
||||
<script type="text/javascript" src="<%=resource%>/cbi.js?v=git-17.250.41546-90ac861"></script>
|
||||
<script type="text/javascript">
|
||||
</script>
|
||||
|
||||
<form method="post" name="cbi" action="<%=luci.dispatcher.build_url("admin", "network", "wifi", "chip_cfg", devname)%>" enctype="multipart/form-data" onreset="return cbi_validate_reset(this)" onsubmit="return cbi_validate_form(this, '<%:Some fields are invalid, cannot save values!%>') && ValidateAllSettings()" autocomplete="off">
|
||||
<fieldset class="cbi-section">
|
||||
<h2><%:Chip Configurations%> - <%=string.split(devname,".")[1]%>
|
||||
<%local diff = mtkwifi.diff_profile(dev.profile)%>
|
||||
<%if next(diff) ~= nil then%>
|
||||
<span style="color:red;">( <a href="javascript:location.href='<%=luci.dispatcher.build_url("admin", "network", "wifi", "reload", dev.devname)%>'"><%:Click here%></a> <%:to apply changes%>)</span>
|
||||
<%end%>
|
||||
</h2>
|
||||
|
||||
<table id="dev-cfg-basic" class="cbi-section-table">
|
||||
<tr>
|
||||
<td><%:Decline BA Request%></td>
|
||||
<td>
|
||||
<select style="width:auto" name="HT_BADecline">
|
||||
<option value="1" <% if cfgs.HT_BADecline == "1" then %> selected="selected"<% end%>><%:Enable%></option>
|
||||
<option value="0" <% if cfgs.HT_BADecline == "0" then %> selected="selected"<% end%>><%:Disable%></option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><%:Reverse Direction Grant (RDG)%></td>
|
||||
<td>
|
||||
<select style="width:auto" name="HT_RDG">
|
||||
<option value="1" <% if cfgs.HT_RDG == "1" then %> selected="selected"<% end%>><%:Enable%></option>
|
||||
<option value="0" <% if cfgs.HT_RDG == "0" then %> selected="selected"<% end%>><%:Disable%></option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><%:BA Win size%> <% if string.split(cfgs.WirelessMode,";")[1] == "16" or string.split(cfgs.WirelessMode,";")[1] == "17" or string.split(cfgs.WirelessMode,";")[1] == "18" then %>(1-256)<% else %>(1-64)<% end %></td>
|
||||
<td>
|
||||
<input name="HT_BAWinSize" id="HT_BAWinSize" value="<%=cfgs.HT_BAWinSize%>"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><%:HT Disallow TKIP%></td>
|
||||
<td>
|
||||
<select style="width:auto" name="HT_DisallowTKIP">
|
||||
<option value="1" <% if cfgs.HT_DisallowTKIP == "1" then %> selected="selected"<% end%>><%:Enable%></option>
|
||||
<option value="0" <% if cfgs.HT_DisallowTKIP == "0" then %> selected="selected"<% end%>><%:Disable%></option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><%:Wi-Fi HWNAT%></td>
|
||||
<td>
|
||||
<select style="width:auto" name="WHNAT">
|
||||
<option value="1" <% if cfgs.WHNAT == "1" then %> selected="selected"<% end%>><%:Enable%></option>
|
||||
<option value="0" <% if cfgs.WHNAT ~= "1" then %> selected="selected"<% end%>><%:Disable%></option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><%:E2pAccessMode%></td>
|
||||
<td>
|
||||
<select style="width:auto" name="E2pAccessMode">
|
||||
<option value="1" <% if cfgs.E2pAccessMode == "1" then %> selected="selected"<% end%>>EFUSE</option>
|
||||
<option value="2" <% if cfgs.E2pAccessMode == "2" then %> selected="selected"<% end%>>FLASH</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><%:Beacon Interval%> (20-999)</td>
|
||||
<td>
|
||||
<input name="BeaconPeriod" id="BeaconPeriod" value="<%=cfgs.BeaconPeriod%>" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><%:Data Beacon Rate (DTIM)%> (1-255)</td>
|
||||
<td>
|
||||
<input name="DtimPeriod" id="DtimPeriod" value="<%=cfgs.DtimPeriod%>" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><%:BG Protection Mode%></td>
|
||||
<td>
|
||||
<select name="BGProtection" style="width:auto">
|
||||
<option value="0" <% if cfgs.BGProtection == "0" then %>selected="selected"<% end %>><%:Auto%></option>
|
||||
<option value="1" <% if cfgs.BGProtection == "1" then %>selected="selected"<% end %>><%:Always On%></option>
|
||||
<option value="2" <% if cfgs.BGProtection == "2" then %>selected="selected"<% end %>><%:Always Off%></option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><%:Short Preamble%></td>
|
||||
<td>
|
||||
<select style="width:auto" name="TxPreamble">
|
||||
<option value="1" <% if cfgs.TxPreamble == "1" then %> selected="selected"<% end%>><%:Enable%></option>
|
||||
<option value="0" <% if cfgs.TxPreamble == "0" then %> selected="selected"<% end%>><%:Disable%></option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><%:TX Burst%></td>
|
||||
<td>
|
||||
<select style="width:auto" name="TxBurst">
|
||||
<option value="1" <% if cfgs.TxBurst == "1" then %> selected="selected"<% end%>><%:Enable%></option>
|
||||
<option value="0" <% if cfgs.TxBurst == "0" then %> selected="selected"<% end%>><%:Disable%></option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><%:Short Slot%></td>
|
||||
<td>
|
||||
<select style="width:auto" name="ShortSlot">
|
||||
<option value="1" <% if cfgs.ShortSlot == "1" then %> selected="selected"<% end%>><%:Enable%></option>
|
||||
<option value="0" <% if cfgs.ShortSlot == "0" then %> selected="selected"<% end%>><%:Disable%></option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<div class="cbi-page-actions">
|
||||
|
||||
<input class="cbi-button cbi-button-apply" name="__apply" value="<%:Save & Apply%>" type="submit">
|
||||
<input class="cbi-button cbi-button-apply" value="<%:Save%>" type="submit">
|
||||
<input class="cbi-button cbi-button-reset" value="<%:Reset%>" type="reset">
|
||||
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
function ValidateAdvancedSettings()
|
||||
{
|
||||
var tmpVal = document.getElementById("HT_BAWinSize").value;
|
||||
<% if string.split(cfgs.WirelessMode,";")[1] == "16" or string.split(cfgs.WirelessMode,";")[1] == "17" or string.split(cfgs.WirelessMode,";")[1] == "18" then %>
|
||||
if(isNaN(tmpVal) || !/^\d{1,3}$/.test(tmpVal) || parseInt(tmpVal) < 1 || parseInt(tmpVal) > 256){
|
||||
alert("BA Win SIze is incorrect!\nPlease enter an integer number between 1 to 256 inclusive.");
|
||||
document.getElementById("HT_BAWinSize").focus();
|
||||
document.getElementById("HT_BAWinSize").select();
|
||||
return false;
|
||||
}
|
||||
<% else %>
|
||||
if(isNaN(tmpVal) || !/^\d{1,2}$/.test(tmpVal) || parseInt(tmpVal) < 1 || parseInt(tmpVal) > 64){
|
||||
alert("BA Win Size is incorrect!\nPlease enter an integer number between 1 to 64 inclusive.");
|
||||
document.getElementById("HT_BAWinSize").focus();
|
||||
document.getElementById("HT_BAWinSize").select();
|
||||
return false;
|
||||
}
|
||||
<% end %>
|
||||
tmpVal = document.getElementById("BeaconPeriod").value;
|
||||
if(isNaN(tmpVal) || !/^\d{2,3}$/.test(tmpVal) || parseInt(tmpVal) < 20 || parseInt(tmpVal) > 999){
|
||||
alert("Beacon Interval is incorrect!\nPlease enter an integer number between 20 to 999 inclusive.");
|
||||
document.getElementById("BeaconPeriod").focus();
|
||||
document.getElementById("BeaconPeriod").select();
|
||||
return false;
|
||||
}
|
||||
tmpVal = document.getElementById("DtimPeriod").value;
|
||||
if(isNaN(tmpVal) || !/^\d{1,3}$/.test(tmpVal) || parseInt(tmpVal) < 1 || parseInt(tmpVal) > 255){
|
||||
alert("Data Beacon Rate (DTIM) is incorrect!\nPlease enter an integer number between 1 to 255 inclusive.");
|
||||
document.getElementById("DtimPeriod").focus();
|
||||
document.getElementById("DtimPeriod").select();
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function ValidateAllSettings(){
|
||||
if( !ValidateAdvancedSettings() ){
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function get_apply_status_cb(rsp)
|
||||
{
|
||||
try{
|
||||
var r = JSON.parse(rsp);
|
||||
}
|
||||
catch(e){
|
||||
return;
|
||||
}
|
||||
if(r.status == "ON_PROGRESS"){
|
||||
var u = confirm("Device is applying the saved settings now!\n" +
|
||||
"It is recommended to wait until all the saved settings are applied.\n" +
|
||||
"Please click on 'OK' button to wait for the device.\n" +
|
||||
"or click on 'Cancel' button to configure the settings available in current web-page.");
|
||||
if (u == true) {
|
||||
location = '<%=luci.dispatcher.build_url("admin", "network", "wifi", "loading")%>' + window.location.pathname;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function get_apply_status()
|
||||
{
|
||||
XHR.get('<%=luci.dispatcher.build_url("admin", "network", "wifi", "get_apply_status")%>', null,
|
||||
function(x)
|
||||
{
|
||||
console.log(x);
|
||||
get_apply_status_cb(x.response);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
window.onload = function() {
|
||||
get_apply_status();
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<%+footer%>
|
@ -0,0 +1,769 @@
|
||||
|
||||
<%+header%>
|
||||
<!--
|
||||
This module is a demo to configure MTK' proprietary WiFi driver.
|
||||
Basic idea is to bypass uci and edit wireless profile (mt76xx.dat) directly.
|
||||
LuCI's WiFi configuration is more logical and elegent, but it's quite tricky to
|
||||
translate uci into MTK's WiFi profile (like we did in "uci2dat").
|
||||
|
||||
Hua Shao <nossiac@163.com>
|
||||
-->
|
||||
|
||||
<%
|
||||
local disp = require "luci.dispatcher"
|
||||
-- local request = disp.context.path
|
||||
local request = disp.context.request
|
||||
local mtkwifi = require("mtkwifi")
|
||||
local devname = request[5]
|
||||
local devs = mtkwifi.get_all_devs()
|
||||
local dev = {}
|
||||
for _,v in ipairs(devs) do
|
||||
if v.devname == devname then
|
||||
dev = v
|
||||
end
|
||||
end
|
||||
local cfgs = mtkwifi.load_profile(dev.profile)
|
||||
local bands = mtkwifi.detect_triband()
|
||||
%>
|
||||
|
||||
<script type="text/javascript" src="<%=resource%>/cbi.js?v=git-17.250.41546-90ac861"></script>
|
||||
<script type="text/javascript">
|
||||
</script>
|
||||
|
||||
<form method="post" name="cbi" action="<%=luci.dispatcher.build_url("admin", "network", "wifi", "dev_cfg", devname)%>" enctype="multipart/form-data" onreset="return cbi_validate_reset(this)" onsubmit="return cbi_validate_form(this, '<%:Some fields are invalid, cannot save values!%>') && ValidateAllSettings()" autocomplete="off">
|
||||
<fieldset class="cbi-section">
|
||||
<h2><%:Device Configuration%> - <%=devname%>
|
||||
<%local diff = mtkwifi.diff_profile(dev.profile)%>
|
||||
<%if next(diff) ~= nil then%>
|
||||
<span style="color:red;"> (<a href="javascript:location.href='<%=luci.dispatcher.build_url("admin", "network", "wifi", "reload", dev.devname)%>'"><%:Click here%></a> <%:to apply changes%>)</span>
|
||||
<%end%>
|
||||
</h2>
|
||||
|
||||
<table id="dev-cfg-basic" class="cbi-section-table">
|
||||
<tr>
|
||||
<td><%:Enable wireless device%></td>
|
||||
<td>
|
||||
<input type="radio" name="DevEnable" value="1" <% if cfgs.DevEnable == "1" then %> checked="checked"<% end %>/><%:Enable%>
|
||||
<input type="radio" name="DevEnable" value="0" <% if cfgs.DevEnable == "0" then %> checked="checked"<% end %>/><%:Disable%>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><%:Channel%></td>
|
||||
<td>
|
||||
<select style="width:auto; min-width:180px;" name="Channel" id="Channel" onchange="Channel_onchange(this.value)" <% if cfgs.ApCliEnable == "1" then %> disabled="disabled" <% end %>>
|
||||
</select>
|
||||
</td>
|
||||
<td><% if cfgs.ApCliEnable == "1" then %><%:APClient/Repeater Mode.%><% end %></td>
|
||||
</tr>
|
||||
<tr id="HT_EXTCHA_TR" style="display:none">
|
||||
<td><%:40MHz HT Ext Channel%></td>
|
||||
<td>
|
||||
<select style="width:auto; min-width:180px;" name="HT_EXTCHA" id="HT_EXTCHA" <% if cfgs.ApCliEnable == "1" or dev.__bw ~= "40" or dev.__bw ~= "60" then %> disabled="disabled" <% end %>>
|
||||
</select>
|
||||
</td>
|
||||
<td><% if cfgs.ApCliEnable == "1" then %><%:APClient/Repeater Mode.%><% end %></td>
|
||||
</tr>
|
||||
<tr id="VHT_Sec80_Channel_TR" style="display:none">
|
||||
<td><%:80MHz Second VHT Channel%></td>
|
||||
<td>
|
||||
<select style="width:auto; min-width:180px; " name="VHT_Sec80_Channel" id="VHT_Sec80_Channel" <% if cfgs.ApCliEnable == "1" or dev.__bw ~= "161" then %> disabled="disabled" <% end %>>
|
||||
</select>
|
||||
</td>
|
||||
<td><% if cfgs.ApCliEnable == "1" then %><%:APClient/Repeater Mode.%><% end %></td>
|
||||
</tr>
|
||||
<% if string.split(cfgs.WirelessMode,";")[1] == "16" or string.split(cfgs.WirelessMode,";")[1] == "17" or string.split(cfgs.WirelessMode,";")[1] == "18" then %>
|
||||
<tr>
|
||||
<td><%:BSS color%></td>
|
||||
<td>
|
||||
<input name="BssColor" id="BssColor" value="<%=cfgs.BSSColorValue%>"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><%:TWT Support%></td>
|
||||
<td>
|
||||
<select name="TWTSupport" style="width:auto">
|
||||
<option value="0" <% if cfgs.TWTSupport == "0" then %> selected="selected" <% end %>><%:Disable%></option>
|
||||
<option value="1" <% if cfgs.TWTSupport == "1" then %> selected="selected" <% end %>><%:Enable%></option>
|
||||
<option value="2" <% if cfgs.TWTSupport == "2" then %> selected="selected" <% end %>><%:Mandatory%></option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<% end %>
|
||||
|
||||
<input type="hidden" id="WirelessMode" value="<%=string.split(cfgs.WirelessMode,";")[1]%>">
|
||||
<tr>
|
||||
<td><%:Country Code%></td>
|
||||
<td>
|
||||
<select name="CountryCode" style="width:auto" id="CountryCode" onchange="CountryCode_onchange()">
|
||||
<option value="US" id="advCountryCodeUS" <% if cfgs.CountryCode == "US" then %> selected="selected"<% end %>><%:US%></option>
|
||||
<option value="JP" id="advCountryCodeJP" <% if cfgs.CountryCode == "JP" then %> selected="selected"<% end %>><%:JP%></option>
|
||||
<option value="FR" id="advCountryCodeFR" <% if cfgs.CountryCode == "FR" then %> selected="selected"<% end %>><%:FR%></option>
|
||||
<option value="IE" id="advCountryCodeIE" <% if cfgs.CountryCode == "IE" then %> selected="selected"<% end %>><%:IE%></option>
|
||||
<option value="CN" id="advCountryCodeCN" <% if cfgs.CountryCode == "CN" then %> selected="selected"<% end %>><%:CN%></option>
|
||||
<option value="NONE" id="advCountryCodeNONE"<% if cfgs.CountryCode == "NONE" then %> selected="selected"<% end %>><%:NONE%></option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><%:Country Region%></td>
|
||||
<td>
|
||||
<select style="width:auto; min-width:180px;" name="__cr" id="__cr" onchange="CountryRegion_onchange(this.value)">
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><%:Channel BandWidth%></td>
|
||||
<td>
|
||||
<select style="width:auto" name="__bw" id="__bw" onchange="Bw_onchange(this.options[this.options.selectedIndex].value)">
|
||||
<option value="20" <% if dev.__bw == "20" then %> selected="selected"<% end%>>20 MHz</option>
|
||||
<option value="40" <% if dev.__bw == "40" then %> selected="selected"<% end%>>40 MHz</option>
|
||||
<option value="60" <% if dev.__bw == "60" then %> selected="selected"<% end%>>20/40 MHz</option>
|
||||
<option value="80" <% if dev.__bw == "80" then %> selected="selected"<% end%>>80 MHz</option>
|
||||
<option value="160" <% if dev.__bw == "160" then %> selected="selected"<% end%>>160 MHz</option>
|
||||
<option value="161" <% if dev.__bw == "161" then %> selected="selected"<% end%>>80+80 MHz</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><%:TX Stream%></td>
|
||||
<td>
|
||||
<select name="HT_TxStream" style="width:auto">
|
||||
<% if dev.maxTxStream then %>
|
||||
<% for txStreamVal=1,dev.maxTxStream do%>
|
||||
<option value="<%=txStreamVal%>" <% if tonumber(cfgs.HT_TxStream) == txStreamVal then %>selected="selected"<% end %>><%=txStreamVal%></option>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<option value="1" <% if cfgs.HT_TxStream == "1" then %>selected="selected"<% end %>>1</option>
|
||||
<option value="2" <% if cfgs.HT_TxStream == "2" then %>selected="selected"<% end %>>2</option>
|
||||
<option value="3" <% if cfgs.HT_TxStream == "3" then %>selected="selected"<% end %>>3</option>
|
||||
<option value="4" <% if cfgs.HT_TxStream == "4" then %>selected="selected"<% end %>>4</option>
|
||||
<% end %>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><%:RX Stream%></td>
|
||||
<td>
|
||||
<select name="HT_RxStream" style="width:auto">
|
||||
<% if dev.maxRxStream then %>
|
||||
<% for rxStreamVal=1,dev.maxRxStream do%>
|
||||
<option value="<%=rxStreamVal%>" <% if tonumber(cfgs.HT_RxStream) == rxStreamVal then %>selected="selected"<% end %>><%=rxStreamVal%></option>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<option value="1" <% if cfgs.HT_RxStream == "1" then %>selected="selected"<% end %>>1</option>
|
||||
<option value="2" <% if cfgs.HT_RxStream == "2" then %>selected="selected"<% end %>>2</option>
|
||||
<option value="3" <% if cfgs.HT_RxStream == "3" then %>selected="selected"<% end %>>3</option>
|
||||
<option value="4" <% if cfgs.HT_RxStream == "4" then %>selected="selected"<% end %>>4</option>
|
||||
<% end %>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><%:TX Power%> (1-100)</td>
|
||||
<td>
|
||||
<input name="TxPower" id="TxPower" value="<%=cfgs.TxPower%>" />
|
||||
</td>
|
||||
</tr>
|
||||
<% if mtkwifi.band(string.split(cfgs.WirelessMode,";")[1]) == "5G" then %>
|
||||
<tr>
|
||||
<td>802.11H</td>
|
||||
<td>
|
||||
<input type="radio" name="IEEE80211H" value="1" <% if cfgs.IEEE80211H == "1" then %> checked="checked"<% end %>/><%:Enable%>
|
||||
<input type="radio" name="IEEE80211H" value="0" <% if cfgs.IEEE80211H == "0" then %> checked="checked"<% end %>/><%:Disable%>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><%:DFS%></td>
|
||||
<td>
|
||||
<input type="radio" name="DfsEnable" value="1" <% if cfgs.DfsEnable == "1" then %> checked="checked"<% end %>/><%:Enable%>
|
||||
<input type="radio" name="DfsEnable" value="0" <% if cfgs.DfsEnable == "0" then %> checked="checked"<% end %>/><%:Disable%>
|
||||
</td>
|
||||
</tr>
|
||||
<% end %>
|
||||
<% if cfgs.MUTxRxEnable then %>
|
||||
<tr>
|
||||
<td><%:Beam Forming and MIMO Setting%></td>
|
||||
<td>
|
||||
<select name="__mimo" autocomplete="off" >
|
||||
<option value="0"<% if tonumber(dev.__mimo) == 0 then %> selected="selected"<% end %>> ETxBF + SU-MIMO </option>
|
||||
<option value="1"<% if tonumber(dev.__mimo) == 1 then %> selected="selected"<% end %>> ITxBF + SU-MIMO </option>
|
||||
<option value="2"<% if tonumber(dev.__mimo) == 2 then %> selected="selected"<% end %>> ITxBF + ETxBF + SU-MIMO </option>
|
||||
<% if not dev.mimoBand or dev.mimoBand == dev.dbdcBandName then %>
|
||||
<option value="3"<% if tonumber(dev.__mimo) == 3 then %> selected="selected"<% end %>> ETxBF + MU-MIMO </option>
|
||||
<option value="4"<% if tonumber(dev.__mimo) == 4 then %> selected="selected"<% end %>> ITxBF + ETxBF + MU-MIMO </option>
|
||||
<% end %>
|
||||
<option value="5"<% if tonumber(dev.__mimo) == 5 then %> selected="selected"<% end %>> <%:Disable%> TxBF </option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<% end %>
|
||||
<% if string.split(cfgs.WirelessMode,";")[1] == "16" or string.split(cfgs.WirelessMode,";")[1] == "17" or string.split(cfgs.WirelessMode,";")[1] == "18" then %>
|
||||
<tr>
|
||||
<td><%:Spatial Reuse%></td>
|
||||
<td>
|
||||
<input type="radio" name="SREnable" value="1" <% if cfgs.SREnable == "1" then %> checked="checked"<% end %>/><%:Enable%>
|
||||
<input type="radio" name="SREnable" value="0" <% if cfgs.SREnable == "0" then %> checked="checked"<% end %>/><%:Disable%>
|
||||
</td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</table>
|
||||
</fieldset>
|
||||
<div class="cbi-page-actions">
|
||||
|
||||
<input class="cbi-button cbi-button-apply" name="__apply" value="<%:Save & Apply%>" type="submit">
|
||||
<input class="cbi-button cbi-button-apply" value="<%:Save%>" type="submit">
|
||||
<input class="cbi-button cbi-button-reset" value="<%:Reset%>" type="reset">
|
||||
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
function CountryCode_onchange(){
|
||||
var wMode = document.getElementById('WirelessMode').value;
|
||||
getCountryRegionList(wMode);
|
||||
}
|
||||
|
||||
function CountryRegion_onchange(country_region) {
|
||||
var wmode_o = document.getElementById('WirelessMode');
|
||||
var wmode;
|
||||
|
||||
if (wmode_o)
|
||||
wmode = wmode_o.value;
|
||||
|
||||
if (wmode == "")
|
||||
wmode = "<%=cfgs.WirelessMode%>";
|
||||
|
||||
getChannelList(wmode, country_region);
|
||||
}
|
||||
|
||||
function Channel_onchange (ch) {
|
||||
getBw(null, ch);
|
||||
}
|
||||
|
||||
function Bw_onchange(bw, ch) {
|
||||
var ch_val;
|
||||
|
||||
if (!ch){
|
||||
var ch_o = document.getElementById('Channel');
|
||||
|
||||
if (ch_o)
|
||||
ch_val = ch_o.value;
|
||||
if (ch_val == "")
|
||||
ch_val = "<%=cfgs.Channel%>";
|
||||
} else {
|
||||
ch_val = ch
|
||||
}
|
||||
|
||||
get5G2nd80MhzChannelList(bw, ch_val);
|
||||
getHTExtChannel(bw, ch_val);
|
||||
}
|
||||
|
||||
function disableCountryRegionAsPerCountryCode(){
|
||||
var wModeSelect = document.getElementById('WirelessMode');
|
||||
var wMode = wModeSelect.value;
|
||||
var cCode = document.getElementById('CountryCode').value;
|
||||
var cRegionSelect = document.getElementById('__cr');
|
||||
var invalidCR_2G = {
|
||||
US:[1,3,4,5,7,31,32,33],
|
||||
JP:[],
|
||||
FR:[4,5,31,33],
|
||||
IE:[4,5,31,33],
|
||||
CN:[4,5,31,33],
|
||||
NONE:[]
|
||||
};
|
||||
var invalidCR_5G = {
|
||||
US:[1,7,11,15,19,20,21,22,30,31,32,33,36,37],
|
||||
JP:[0,3,4,5,7,9,10,11,13,14,15,16,17,19,20,21,30,31,32,34,36,37],
|
||||
FR:[0,3,4,5,7,9,10,11,12,13,14,15,16,17,19,20,21,30,31,32,34,36,37],
|
||||
IE:[0,3,4,5,7,9,10,11,12,13,14,15,16,17,19,20,21,30,31,32,34,36,37],
|
||||
CN:[1,7,9,11,12,13,14,15,18,19,20,21,22,30,31,32,33,36,37],
|
||||
NONE:[]
|
||||
};
|
||||
if (is_mode_gband(wMode)){
|
||||
// Channel 14 should be disabled for all the Countries except JAPAN(JP) and NONE Country Code.
|
||||
// If WireleeMode is not in 'B only' mode, then Channel 14 should be disabled for Japan and NONE Country Code too.
|
||||
if(wMode != "1"){
|
||||
if(cCode == "JP"){
|
||||
invalidCR_2G["JP"]=[4,5,31,33];
|
||||
}
|
||||
else if(cCode == "NONE"){
|
||||
invalidCR_2G["NONE"]=[4,5,31,33];
|
||||
}
|
||||
}
|
||||
if((cCode == "JP" && invalidCR_2G["JP"].length > 0) ||
|
||||
(cCode == "NONE" && invalidCR_2G["NONE"].length > 0) ||
|
||||
((cCode != "JP") && (cCode != "NONE"))){
|
||||
for(var idx=0; idx < cRegionSelect.length; idx++){
|
||||
if(invalidCR_2G[cCode] && invalidCR_2G[cCode].indexOf(cRegionSelect.options[idx].value * 1) != -1){
|
||||
cRegionSelect.options[idx].disabled = true;
|
||||
cRegionSelect.options[idx].selected = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (is_mode_aband(wMode) && cCode != "NONE"){
|
||||
for(var idx=0; idx < cRegionSelect.length; idx++){
|
||||
if(invalidCR_5G[cCode] && invalidCR_5G[cCode].indexOf(cRegionSelect.options[idx].value * 1) != -1){
|
||||
cRegionSelect.options[idx].disabled = true;
|
||||
cRegionSelect.options[idx].selected = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return cRegionSelect.value;
|
||||
}
|
||||
|
||||
function initCountryRegionList(list, mode){
|
||||
var select = document.getElementById('__cr');
|
||||
var cr = {};
|
||||
|
||||
if (is_mode_gband(mode))
|
||||
cr = "<%=cfgs.CountryRegion%>";
|
||||
else if (is_mode_aband(mode))
|
||||
cr = "<%=cfgs.CountryRegionABand%>";
|
||||
|
||||
var new_cr = initList(select, list, cr, "region");
|
||||
new_cr = disableCountryRegionAsPerCountryCode();
|
||||
|
||||
CountryRegion_onchange(new_cr);
|
||||
}
|
||||
|
||||
function getCountryRegionList(mode) {
|
||||
XHR.get('<%=luci.dispatcher.build_url("admin", "network", "wifi", "get_country_region_list")%>', {mode:mode},
|
||||
function(x)
|
||||
{
|
||||
//console.log(x);
|
||||
//console.log(x.response);
|
||||
var json = eval(x.response);
|
||||
initCountryRegionList(json, mode);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function initChannelList(list) {
|
||||
/* choose auto select when no matching item in the lis */
|
||||
var select = document.getElementById('Channel');
|
||||
var ch = {};
|
||||
var new_ch = null;
|
||||
|
||||
ch.cval = select.value;
|
||||
ch.oval = "<%=cfgs.Channel%>";
|
||||
|
||||
var new_ch = initList(select, list, ch, "channel");
|
||||
Channel_onchange(new_ch);
|
||||
}
|
||||
|
||||
function getChannelList(mode, country_region) {
|
||||
XHR.get('<%=luci.dispatcher.build_url("admin", "network", "wifi", "get_channel_list")%>', {mode:mode, country_region:country_region},
|
||||
function(x)
|
||||
{
|
||||
//console.log(x);
|
||||
//console.log(x.response);
|
||||
var json = eval(x.response);
|
||||
initChannelList(json);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function GetCountryRegion(mode) {
|
||||
var cr_o = document.getElementById('__cr');
|
||||
var cr = "";
|
||||
|
||||
if (cr_o) {
|
||||
cr = cr_o.value;
|
||||
}
|
||||
|
||||
if (cr == "") {
|
||||
if (is_mode_gband(mode)) {
|
||||
cr = "<%=cfgs.CountryRegion%>";
|
||||
} else if (is_mode_aband(mode)) {
|
||||
cr = "<%=cfgs.CountryRegionABand%>";
|
||||
} else {
|
||||
alert("Cannot get valid CountryRegion from invalid WireleeMode");
|
||||
}
|
||||
}
|
||||
|
||||
return cr;
|
||||
}
|
||||
|
||||
function getBw(mode, ch) {
|
||||
/* choose bw as wide as possible if modification is needed */
|
||||
var bw_sel = document.getElementById('__bw');
|
||||
var wModeSelect,wmode;
|
||||
|
||||
wModeSelect = document.getElementById('WirelessMode');
|
||||
if (!mode) {
|
||||
wmode = wModeSelect.value*1;
|
||||
} else {
|
||||
wmode = mode*1;
|
||||
}
|
||||
if( <%=string.split(cfgs.WirelessMode,";")[1]%> != 18 ){
|
||||
if (is_mode_legacy_only(wmode) || parseInt(ch) >= 165) {
|
||||
for (var idx=0; idx < bw_sel.length; idx++) {
|
||||
bw_sel.options[idx].disabled = false;
|
||||
|
||||
if (bw_sel.options[idx].value == 20)
|
||||
bw_sel.options[idx].selected = true;
|
||||
|
||||
if (bw_sel.options[idx].value > 20)
|
||||
bw_sel.options[idx].disabled = true;
|
||||
}
|
||||
} else if (is_ch_gband(ch)) {
|
||||
for (var idx=0; idx < bw_sel.length; idx++) {
|
||||
bw_sel.options[idx].disabled = false;
|
||||
|
||||
if ((bw_sel.options[idx].value == 60) && (bw_sel.selectedIndex > idx))
|
||||
bw_sel.options[idx].selected = true;
|
||||
|
||||
if (bw_sel.options[idx].value > 60)
|
||||
bw_sel.options[idx].disabled = true;
|
||||
}
|
||||
} else if (is_ch_aband(ch)) {
|
||||
var chosen60 = false;
|
||||
var bw160 = "<%=cfgs.VHT_BW%>"*1;
|
||||
|
||||
if (bw_sel.value == 60)
|
||||
chosen60 = 1;
|
||||
|
||||
for (var idx=0; idx < bw_sel.length; idx++) {
|
||||
bw_sel.options[idx].disabled = false;
|
||||
if (bw_sel.options[idx].value == 40 && chosen60 && bw160 == 0) {
|
||||
bw_sel.options[idx].selected = true;
|
||||
} else if (bw_sel.options[idx].value == 60) {
|
||||
bw_sel.options[idx].disabled = true;
|
||||
bw_sel.options[idx].selected = false;
|
||||
} else if (wmode == 8 && bw_sel.options[idx].value == 80) {
|
||||
bw_sel.options[idx].disabled = true;
|
||||
bw_sel.options[idx].selected = false;
|
||||
} else if (bw_sel.options[idx].value == 160 && chosen60 && bw160 == 1) {
|
||||
bw_sel.options[idx].selected = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var invalidChBwList = '<%=(dev.invalidChBwList and table.concat(dev.invalidChBwList,";"))%>'.split(";");
|
||||
if(invalidChBwList.length > 0){
|
||||
for (var idx=0; idx < bw_sel.length; idx++) {
|
||||
if(invalidChBwList.indexOf(bw_sel.options[idx].value) != -1){
|
||||
bw_sel.options[idx].disabled = true;
|
||||
bw_sel.options[idx].selected = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(wmode == 18 ) {
|
||||
for (var idx=0; idx < bw_sel.length; idx++) {
|
||||
bw_sel.options[idx].disabled = false;
|
||||
if(bw_sel.options[idx].value == 40 && ch>229){
|
||||
bw_sel.options[idx].disabled = true;
|
||||
bw_sel.options[idx].selected = false;
|
||||
}
|
||||
if(bw_sel.options[idx].value == 80 && ch>221){
|
||||
bw_sel.options[idx].disabled = true;
|
||||
bw_sel.options[idx].selected = false;
|
||||
}
|
||||
if(bw_sel.options[idx].value == 160 && ch>221){
|
||||
bw_sel.options[idx].disabled = true;
|
||||
bw_sel.options[idx].selected = false;
|
||||
}
|
||||
if(bw_sel.options[idx].value == 161 || bw_sel.options[idx].value == 60){
|
||||
bw_sel.options[idx].disabled = true;
|
||||
bw_sel.options[idx].selected = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
Bw_onchange(bw_sel.value, ch);
|
||||
}
|
||||
|
||||
function init5G2nd80MhzChannelList(list,ch,cr) {
|
||||
var select = document.getElementById('VHT_Sec80_Channel');
|
||||
var ch2 = {};
|
||||
var new_ch2 = null;
|
||||
|
||||
ch2.cval = select.value;
|
||||
ch2.oval = "<%=cfgs.VHT_Sec80_Channel%>";
|
||||
|
||||
initList(select, list, ch2, "channel");
|
||||
|
||||
if (select.length > 0) {
|
||||
document.getElementById("VHT_Sec80_Channel_TR").style.display = "";
|
||||
select.disabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
function get5G2nd80MhzChannelList(bw, ch) {
|
||||
document.getElementById("VHT_Sec80_Channel_TR").style.display = "none";
|
||||
var ch_5g_2nd = document.getElementById('VHT_Sec80_Channel');
|
||||
|
||||
ch_5g_2nd.disabled = true;
|
||||
|
||||
|
||||
if (ch == "0")
|
||||
return;
|
||||
|
||||
if (bw != "161" || ch == "0")
|
||||
return;
|
||||
|
||||
var mode = document.getElementById('WirelessMode');
|
||||
mode = mode.value*1;
|
||||
|
||||
var cr = GetCountryRegion(mode);
|
||||
XHR.get('<%=luci.dispatcher.build_url("admin", "network", "wifi", "get_5G_2nd_80Mhz_channel_list")%>', {ch_cur:ch, country_region:cr},
|
||||
function(x)
|
||||
{
|
||||
//console.log(x);
|
||||
//console.log(x.response);
|
||||
var json = eval(x.response);
|
||||
init5G2nd80MhzChannelList(json,ch,cr);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function initHTExtChannelList(list,ch,cr) {
|
||||
var select = document.getElementById('HT_EXTCHA');
|
||||
var ch2 = {};
|
||||
var new_ch2 = null;
|
||||
|
||||
ch2.cval = select.value;
|
||||
ch2.oval = "<%=cfgs.HT_EXTCHA%>";
|
||||
|
||||
initList(select, list, ch2, "val");
|
||||
|
||||
if (select.length > 0) {
|
||||
document.getElementById("HT_EXTCHA_TR").style.display = "";
|
||||
select.disabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
function getHTExtChannel(bw, ch) {
|
||||
document.getElementById("HT_EXTCHA_TR").style.display = "none";
|
||||
|
||||
var ch_2g_ext = document.getElementById('HT_EXTCHA');
|
||||
|
||||
ch_2g_ext.disabled = true;
|
||||
|
||||
if (bw != "40" && bw != "60")
|
||||
return;
|
||||
|
||||
var mode = document.getElementById('WirelessMode');
|
||||
mode = mode.value*1;
|
||||
|
||||
// skip auto channel
|
||||
if(mode==18){
|
||||
if (ch == "0" || parseInt(ch) > 229)
|
||||
return;
|
||||
}
|
||||
else{
|
||||
if (ch == "0" || parseInt(ch) >= 165)
|
||||
return;
|
||||
}
|
||||
|
||||
var cr = GetCountryRegion(mode);
|
||||
XHR.get('<%=luci.dispatcher.build_url("admin", "network", "wifi", "get_HT_ext_channel_list")%>', {mode:mode, ch_cur:ch, country_region:cr},
|
||||
function(x)
|
||||
{
|
||||
//console.log(x);
|
||||
//console.log(x.response);
|
||||
var json = eval(x.response);
|
||||
initHTExtChannelList(json,ch,cr);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function is_mode_legacy_only(mode) {
|
||||
var imode = mode*1;
|
||||
|
||||
return ((imode >= 0) && (imode <= 4));
|
||||
}
|
||||
|
||||
function is_mode_gband(mode) {
|
||||
var imode = mode*1;
|
||||
var gband_mode_list = [0,1,4,6,7,9,16];
|
||||
var i;
|
||||
|
||||
for (i = 0; i < gband_mode_list.length; i++){
|
||||
if( gband_mode_list[i] == imode )
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function is_mode_aband(mode) {
|
||||
var imode = mode*1;
|
||||
var aband_mode_list = [2,8,11,14,15,17,18];
|
||||
var i;
|
||||
|
||||
for (i = 0; i < aband_mode_list.length; i++){
|
||||
if( aband_mode_list[i] == imode )
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function is_ch_gband(ch) {
|
||||
ch = ch*1;
|
||||
|
||||
if (ch == 0) {
|
||||
var wmode = document.getElementById('WirelessMode');
|
||||
|
||||
return is_mode_gband(wmode.value);
|
||||
}
|
||||
|
||||
return ((ch > 0) && (ch <= 14));
|
||||
}
|
||||
|
||||
function is_ch_aband(ch) {
|
||||
ch = ch*1;
|
||||
|
||||
if (ch == 0) {
|
||||
var wmode = document.getElementById('WirelessMode');
|
||||
|
||||
return is_mode_aband(wmode.value);
|
||||
}
|
||||
|
||||
return ((ch >= 36 ) && (ch <= 165));
|
||||
}
|
||||
|
||||
function initList(selobj, list, selvals, value, text){
|
||||
var sel = {};
|
||||
var id = selobj.id;
|
||||
var noChannelGrp = false;
|
||||
var only2G = false;
|
||||
|
||||
if (typeof(selvals) != "object")
|
||||
sel[0] = selvals;
|
||||
else
|
||||
sel = selvals;
|
||||
|
||||
selobj.innerHTML = "";
|
||||
for (var i in list) {
|
||||
if (value != "region") {
|
||||
<% if bands == 3 and mtkwifi.band(string.split(cfgs.WirelessMode,";")[1]) == "5G" then %>
|
||||
<% if cfgs.ChannelGrp == "0:0:1:1" then %>
|
||||
if (list[i].channel == 0 || list[i].channel >= 100){
|
||||
<% elseif cfgs.ChannelGrp == "1:1:0:0" then %>
|
||||
if (list[i].channel <= 64){
|
||||
<% else %>
|
||||
noChannelGrp = true;
|
||||
if (noChannelGrp){
|
||||
<% end %>
|
||||
var opt = document.createElement('option');
|
||||
|
||||
if(value)
|
||||
opt.value = list[i][value];
|
||||
else
|
||||
opt.value = list[i].value;
|
||||
|
||||
if(text)
|
||||
opt.text = list[i][text];
|
||||
else
|
||||
opt.text = list[i].text;
|
||||
|
||||
selobj.appendChild(opt);
|
||||
}
|
||||
<% else %>
|
||||
only2G = true;
|
||||
<% end %>
|
||||
}
|
||||
|
||||
if (only2G || value == "region"){
|
||||
var opt = document.createElement('option');
|
||||
|
||||
if(value)
|
||||
opt.value = list[i][value];
|
||||
else
|
||||
opt.value = list[i].value;
|
||||
|
||||
if(text)
|
||||
opt.text = list[i][text];
|
||||
else
|
||||
opt.text = list[i].text;
|
||||
|
||||
selobj.appendChild(opt);
|
||||
}
|
||||
}
|
||||
|
||||
var selv = null;
|
||||
for (var k in sel) {
|
||||
//console.log("[initList][" + id + "] sel[" + k + "]=" + sel[k]);
|
||||
for (var i=0; i < selobj.length; i++){
|
||||
if (selobj.options[i].value == sel[k]){
|
||||
selobj.options[i].selected = true;
|
||||
selv = sel[k];
|
||||
//console.log("[initList][" + id + "] found selv=" + selv);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (selv) break;
|
||||
}
|
||||
|
||||
if (!selv) {
|
||||
selv = selobj.value;
|
||||
//console.log("[initList][" + id + "] !selv, selv=" + selv);
|
||||
}
|
||||
|
||||
return selv;
|
||||
}
|
||||
|
||||
function ValidateAdvancedSettings()
|
||||
{
|
||||
var tmpVal = document.getElementById("TxPower").value;
|
||||
if(isNaN(tmpVal) || !/^\d{1,3}$/.test(tmpVal) || parseInt(tmpVal) < 1 || parseInt(tmpVal) > 100){
|
||||
alert("TX Power is incorrect!\nPlease enter an integer number between 1 to 100 inclusive.");
|
||||
document.getElementById("TxPower").focus();
|
||||
document.getElementById("TxPower").select();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function ValidateAllSettings(){
|
||||
if( !ValidateAdvancedSettings() ){
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function get_apply_status_cb(rsp)
|
||||
{
|
||||
try{
|
||||
var r = JSON.parse(rsp);
|
||||
}
|
||||
catch(e){
|
||||
return;
|
||||
}
|
||||
if(r.status == "ON_PROGRESS"){
|
||||
var u = confirm("Device is applying the saved settings now!\n" +
|
||||
"It is recommended to wait until all the saved settings are applied.\n" +
|
||||
"Please click on 'OK' button to wait for the device.\n" +
|
||||
"or click on 'Cancel' button to configure the settings available in current web-page.");
|
||||
if (u == true) {
|
||||
location = '<%=luci.dispatcher.build_url("admin", "network", "wifi", "loading")%>' + window.location.pathname;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function get_apply_status()
|
||||
{
|
||||
XHR.get('<%=luci.dispatcher.build_url("admin", "network", "wifi", "get_apply_status")%>', null,
|
||||
function(x)
|
||||
{
|
||||
console.log(x);
|
||||
get_apply_status_cb(x.response);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
window.onload = function() {
|
||||
var mode = '<%=string.split(cfgs.WirelessMode,";")[1]%>'
|
||||
var cr = GetCountryRegion(mode);
|
||||
getCountryRegionList(mode, cr);
|
||||
get_apply_status();
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<%+footer%>
|
@ -0,0 +1,90 @@
|
||||
<%#
|
||||
File name : mtk_wifi_loading.htm
|
||||
This file is used in WebUI based on LuCI to handle the loading event.
|
||||
%>
|
||||
<%+header%>
|
||||
<%
|
||||
local disp = require "luci.dispatcher"
|
||||
local request = disp.context.request
|
||||
local url = "/"..table.concat(request,'/',5)
|
||||
%>
|
||||
<h2><%:Wireless%></h2>
|
||||
<div class="alert-message" id="BusyMsg">
|
||||
<img src="<%=resource%>/icons/loading.gif" alt="" style="vertical-align:middle" />
|
||||
<big><strong><%:Please wait while the settings are being applied.%></strong></big>
|
||||
</div>
|
||||
<div class="alert-message error" id="TimeoutMsgDiv" style="display:none">
|
||||
<big><strong id="TimeoutMsg">Device is taking too much time to apply the settings!</strong></big>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
function visit_url(url)
|
||||
{
|
||||
window.onbeforeunload = function() {};
|
||||
if(url && url.indexOf('<%=controller%>') != -1){
|
||||
location = url;
|
||||
}
|
||||
else{
|
||||
location = '<%=luci.dispatcher.build_url("admin", "network", "wifi")%>';
|
||||
}
|
||||
}
|
||||
|
||||
function get_apply_status_cb(rsp, remNumTries)
|
||||
{
|
||||
try{
|
||||
var r = JSON.parse(rsp);
|
||||
if(r.status == "DONE"){
|
||||
visit_url('<%=url%>');
|
||||
return;
|
||||
}
|
||||
else if(r.status == "REBOOT"){
|
||||
visit_url('<%=luci.dispatcher.build_url("admin", "network", "wifi", "apply_reboot")%>');
|
||||
return;
|
||||
}
|
||||
}
|
||||
catch(e){}
|
||||
finally{
|
||||
remNumTries -= 1;
|
||||
if(remNumTries > 0){
|
||||
window.setTimeout(get_apply_status, 5000, remNumTries);
|
||||
}
|
||||
else{
|
||||
show_header();
|
||||
document.getElementById("TimeoutMsgDiv").style.display = '';
|
||||
document.getElementById("BusyMsg").style.display = 'none';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function get_apply_status(remNumTries)
|
||||
{
|
||||
XHR.get('<%=luci.dispatcher.build_url("admin", "network", "wifi", "get_apply_status")%>', null,
|
||||
function(x)
|
||||
{
|
||||
console.log(x);
|
||||
get_apply_status_cb(x.response, remNumTries);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function show_header()
|
||||
{
|
||||
document.getElementsByTagName("HEADER")[0].style.display = "block";
|
||||
}
|
||||
|
||||
function hide_header()
|
||||
{
|
||||
document.getElementsByTagName("HEADER")[0].style.display = "none";
|
||||
}
|
||||
|
||||
window.onload = function(){
|
||||
hide_header();
|
||||
window.setTimeout(get_apply_status, 5000, 180);
|
||||
}
|
||||
|
||||
window.onbeforeunload = function(evt) {
|
||||
evt.returnValue = "Saved data have not been applied yet! Are you sure?";
|
||||
return evt.returnValue;
|
||||
}
|
||||
</script>
|
||||
<%+footer%>
|
@ -0,0 +1,557 @@
|
||||
<%+header%>
|
||||
<!--
|
||||
This module is a demo to configure MTK' proprietary WiFi driver.
|
||||
Basic idea is to bypass uci and edit wireless profile (mt76xx.dat) directly.
|
||||
LuCI's WiFi configuration is more logical and elegent, but it's quite tricky to
|
||||
translate uci into MTK's WiFi profile (like we did in "uci2dat").
|
||||
|
||||
Hua Shao <nossiac@163.com>
|
||||
-->
|
||||
|
||||
<%
|
||||
local mtkwifi = require("mtkwifi")
|
||||
local devs = mtkwifi.get_all_devs()
|
||||
local l1dat, l1 = mtkwifi.__get_l1dat()
|
||||
local dridx = l1.DEV_RINDEX
|
||||
local main_ifname
|
||||
local chipname
|
||||
%>
|
||||
|
||||
<style>
|
||||
table,td,th
|
||||
{
|
||||
border-top:1px solid ;
|
||||
border-spacing: 0;
|
||||
border-color:#E0E0E0;
|
||||
}
|
||||
</style>
|
||||
|
||||
<h2><%:Wireless%></h2>
|
||||
|
||||
<% if #devs == 0 then %>
|
||||
<div class="alert-message">
|
||||
<big><strong><%:No wireless device found!%></strong></big>
|
||||
</div>
|
||||
<% else %>
|
||||
|
||||
<fieldset class="cbi-section">
|
||||
<table class="cbi-section-table" style="empty-cells:hide">
|
||||
<% for _,dev in ipairs(devs) do %>
|
||||
<% main_ifname = l1dat and l1dat[dridx][dev.devname].main_ifname or dbdc_prefix[mainidx][subidx].."0" %>
|
||||
<% if mtkwifi.exists("/sys/class/net/"..main_ifname) then %>
|
||||
<!-- physical device -->
|
||||
<tbody>
|
||||
<% if chipname ~= string.split(dev.devname,".")[1].."."..(dev.mainidx) then %>
|
||||
<% chipname = string.split(dev.devname,".")[1].."."..(dev.mainidx) %>
|
||||
<tr style="height:45px">
|
||||
<td style="padding:15px;">
|
||||
<img src="/luci-static/resources/icons/wifi_big.png">
|
||||
</td>
|
||||
<td colspan="2" style="text-align:left">
|
||||
<big><strong title="<%=dev.profile%>"> <%=string.split(dev.devname,".")[1]%></strong></big>
|
||||
<%if not dev.vifs then%>
|
||||
<span style="color:red;">* <%:FATAL ERROR: Incorrect Profile Settings%></span>
|
||||
<%end%>
|
||||
<br>
|
||||
<%if dev.version then%>
|
||||
<span> <%:Driver version%>: <%=dev.version%> <br/></span>
|
||||
<%end%>
|
||||
</td>
|
||||
<td style="width:310px;text-align:right">
|
||||
<div id="ActionBtns_<%=string.split(dev.devname,".")[1]%>">
|
||||
<button class="cbi-button cbi-button-edit" onclick="visit_url('<%=string.split(dev.devname,".")[1]%>',
|
||||
'<%=luci.dispatcher.build_url("admin", "network", "wifi", "chip_cfg_view", dev.devname)%>')"><%:CONFIG%></button>
|
||||
</div>
|
||||
<div id="BusyText_<%=string.split(dev.devname,".")[1]%>" style="display:none">
|
||||
<big><strong><%:Processing request.%></strong></big>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<% end %>
|
||||
<tr>
|
||||
<td style="width:56px"></td>
|
||||
<td colspan="2" style="text-align:left;padding-left:25px;">
|
||||
<big><strong title="<%=dev.profile%>"><%=dev.devname%></strong></big>
|
||||
<%local diff = mtkwifi.diff_profile(dev.profile)%>
|
||||
<%if next(diff) ~= nil then%>
|
||||
<span style="color:red;">* <%:need reload to apply changes%></span>
|
||||
<%end%>
|
||||
<br>
|
||||
<%local cfgs = mtkwifi.load_profile(dev.profile)%>
|
||||
<span> <%:Current Band%>: <%=mtkwifi.band(string.split(cfgs.WirelessMode,";")[1])%> <br/> </span>
|
||||
<% if dev.Enable == "0" then%>
|
||||
<span style="color:red;"> <%:Wireless device is disabled%> </span>
|
||||
<%else%>
|
||||
<span> <%:Work mode%>: <% if dev.ApCliEnable == "1" then %> APCli <% else %> AP <% end %> <br/> </span>
|
||||
<%local temp = mtkwifi.get_temp(dev.devname)%>
|
||||
<%if temp then%>
|
||||
<span> <%:Tempature%>: <%=temp%>°C <br/> </span>
|
||||
<%end%>
|
||||
<%local txpwr = mtkwifi.get_txpwr(dev.devname)%>
|
||||
<%if txpwr then%>
|
||||
<span> <%:Tx Power%>: <%=txpwr%> dbm <br/> </span>
|
||||
<%end%>
|
||||
<%end%>
|
||||
</td>
|
||||
<td style="width:310px;text-align:right">
|
||||
<div id="ActionBtns_<%=dev.devname%>">
|
||||
<%if not dev.vifs then%>
|
||||
<button class="cbi-button cbi-button-apply" id="reset" onclick="visit_url('<%=dev.devname%>',
|
||||
'<%=luci.dispatcher.build_url("admin", "network", "wifi", "reset_to_defaults", dev.devname)%>')"><%:Restore Profile to Factory Settings%></button>
|
||||
<%else%>
|
||||
<button class="cbi-button cbi-button-reset" onclick="visit_url_confirm('<%:Are you sure to RELOAD%> <%=dev.devname%>?',
|
||||
'<%=dev.devname%>','<%=luci.dispatcher.build_url("admin", "network", "wifi", "reload", dev.devname)%>')"><%:RELOAD%></button>
|
||||
<button class="cbi-button cbi-button-edit" onclick="visit_url('<%=dev.devname%>',
|
||||
'<%=luci.dispatcher.build_url("admin", "network", "wifi", "dev_cfg_view", dev.devname)%>')"><%:CONFIG%></button>
|
||||
<button class="cbi-button cbi-button-add" onclick='add_vif("<%=dev.devname%>","<%=dev.vifs.__prefix%>","<%=dev.maxVif%>")'><%:ADD%></button>
|
||||
<%end%>
|
||||
</div>
|
||||
<div id="BusyText_<%=dev.devname%>" style="display:none">
|
||||
<big><strong><%:Processing request.%></strong></big>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- /physical device -->
|
||||
<% if dev.vifs and dev.Enable == "1" then%>
|
||||
<!-- network list -->
|
||||
<% for _,vif in ipairs(dev.vifs) do %>
|
||||
<tr class="cbi-section-table-row cbi-rowstyle-1">
|
||||
<td></td>
|
||||
<td class="cbi-value-field" style="width:16px; padding:3px;padding-left:40px;">
|
||||
<% if vif.state == "up" then %>
|
||||
<img src="/luci-static/resources/icons/signal-75-100.png">
|
||||
<% else %>
|
||||
<img src="/luci-static/resources/icons/signal-none.png">
|
||||
<% end %>
|
||||
</td>
|
||||
<td class="cbi-value-field" style="vertical-align:middle; text-align:left; padding:3px">
|
||||
<strong><%:Interface%>:</strong> <%=vif.vifname%> |
|
||||
<strong><%:Type%>:</strong> AP |
|
||||
<strong>SSID:</strong>
|
||||
<span id="SSID_<%=vif.vifname%>">
|
||||
<% if vif.__ssid == "" then %>
|
||||
<span style="color:red;"><%:Error: value not present in dat file%></span>
|
||||
<% else %>
|
||||
<span> <%=vif.__ssid and vif.__ssid:gsub(" "," ") or nil%> <% end %> </span>
|
||||
</span> |
|
||||
<strong><%:Channel%>:</strong>
|
||||
<span id="CHANNEL_<%=vif.vifname%>"><%=vif.__channel or dev.Channel%></span>
|
||||
<br>
|
||||
<% if vif.state == "up" then %>
|
||||
<strong>BSSID:</strong> <span id="BSSID_<%=vif.vifname%>"><%=vif.__bssid%></span> | <strong><%:Wireless Mode%>:</strong> <span><%=dev.WirelessModeList[tonumber(vif.__wirelessmode)]%></span>
|
||||
<% else %>
|
||||
<%:Wireless is disabled or not associated%>
|
||||
<% end %>
|
||||
</td>
|
||||
<td class="cbi-value-field" style="text-align:right">
|
||||
<div id="ActionBtns_<%=vif.vifname%>">
|
||||
<% if not vif.state then %>
|
||||
<button class="cbi-button cbi-button-apply" onclick="alert('Please click on Reload button of ' + '<%=dev.devname%>' + ' device to enable this interface.')"><%:ENABLE%></button>
|
||||
<% elseif vif.state == "up" then %>
|
||||
<button class="cbi-button cbi-button-reset" onclick="visit_url_confirm('<%:Are you sure to DISABLE%> <%=vif.vifname%>?',
|
||||
'<%=vif.vifname%>','<%=luci.dispatcher.build_url("admin", "network", "wifi", "vif_disable", vif.vifname)%>')"><%:DISABLE%></button>
|
||||
<% else %>
|
||||
<button class="cbi-button cbi-button-apply" onclick="visit_url('<%=vif.vifname%>',
|
||||
'<%=luci.dispatcher.build_url("admin", "network", "wifi", "vif_enable", vif.vifname)%>')"><%:ENABLE%></button>
|
||||
<% end %>
|
||||
<button class="cbi-button cbi-button-edit" onclick="visit_url('<%=vif.vifname%>',
|
||||
'<%=luci.dispatcher.build_url("admin", "network", "wifi", "vif_cfg_view", dev.devname, vif.vifname)%>')"><%:CONFIG%></button>
|
||||
<button class="cbi-button cbi-button-remove" onclick="visit_url_confirm('<%:Are you sure to REMOVE%> <%=vif.vifname%>?',
|
||||
'<%=vif.vifname%>','<%=luci.dispatcher.build_url("admin", "network", "wifi", "vif_del", dev.devname, vif.vifname)%>')"><%:REMOVE%></button>
|
||||
</div>
|
||||
<div id="BusyText_<%=vif.vifname%>" style="display:none">
|
||||
<big><strong><%:Processing request.%></strong></big>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<% end %>
|
||||
<!-- /network list -->
|
||||
<!-- apcli list -->
|
||||
<% if dev.apcli then %>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td class="cbi-value-field" style="width:16px; padding:3px;padding-left:40px;">
|
||||
<% if dev.apcli.state == "up" then %>
|
||||
<img src="/luci-static/resources/icons/signal-75-100.png">
|
||||
<% else %>
|
||||
<img src="/luci-static/resources/icons/signal-none.png">
|
||||
<% end %>
|
||||
</td>
|
||||
<td class="cbi-value-field" style="vertical-align:middle; text-align:left; padding:3px"><strong><%:Interface%>:</strong> <%=dev.apcli.devname%> | <strong><%:Type%>:</strong> STA | <strong><%:Status%>:</strong> <span id="ConnStatus_<%=dev.apcli.devname%>"><% if dev.ApCliEnable ~= "1" then %> <%:Disconnected%> <% end %></span>
|
||||
<br>
|
||||
<div id="LoadingBar_<%=dev.apcli.devname%>" <% if dev.ApCliEnable ~= "1" then %> style="display:none" <% end %>>
|
||||
<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="width:20px;height:20px;vertical-align:middle;"/> <cite> <%:Loading connection information of%> <%=dev.apcli.devname%></cite>
|
||||
</div>
|
||||
<div id="ConnInfo_<%=dev.apcli.devname%>" style="display:none">
|
||||
<strong>BSSID:</strong> <span id="ApCliBssid_<%=dev.apcli.devname%>"></span> |
|
||||
<strong>SSID:</strong> <span id="ApCliSsid_<%=dev.apcli.devname%>"></span>
|
||||
</div>
|
||||
<span id="DisConnMsg_<%=dev.apcli.devname%>" <% if dev.ApCliEnable == "1" then %> style="display:none" <% end %>><%:Wireless is disabled or not associated%></span>
|
||||
</td>
|
||||
<td style="text-align:right">
|
||||
<div id="ActionBtns_<%=dev.apcli.devname%>">
|
||||
<% if dev.ApCliEnable ~= "1" then %>
|
||||
<% if dev.apcli.state == "up" then %>
|
||||
<button class="cbi-button cbi-button-reset" onclick="visit_url_confirm('<%:Are you sure to DISABLE%> <%=dev.apcli.devname%>?',
|
||||
'<%=dev.apcli.devname%>','<%=luci.dispatcher.build_url("admin", "network", "wifi", "vif_disable", dev.apcli.vifname)%>')"><%:DISABLE%></button>
|
||||
<button class="cbi-button cbi-button-reload" onclick="visit_url_confirm('<%:Are you sure to RECONNECT%> <%=dev.apcli.devname%>?',
|
||||
'<%=dev.apcli.devname%>','<%=luci.dispatcher.build_url("admin", "network", "wifi", "apcli_connect", dev.devname, dev.apcli.vifname)%>')"><%:RECONNECT%></button>
|
||||
<% end %>
|
||||
<button class="cbi-button cbi-button-edit" onclick="visit_url('<%=dev.apcli.devname%>',
|
||||
'<%=luci.dispatcher.build_url("admin", "network", "wifi", "apcli_cfg_view", dev.devname, dev.apcli.vifname)%>')"><%:CONFIG%></button>
|
||||
<% else %>
|
||||
<button class="cbi-button cbi-button-reset" style="display:none" id="ApCliDownBtn_<%=dev.apcli.devname%>" onclick="visit_url_confirm('<%:Are you sure to DISABLE%> <%=dev.apcli.devname%>?',
|
||||
'<%=dev.apcli.devname%>','<%=luci.dispatcher.build_url("admin", "network", "wifi", "vif_disable", dev.apcli.vifname)%>')"><%:DISABLE%></button>
|
||||
<button class="cbi-button cbi-button-apply" style="display:none" id="ApCliUpBtn_<%=dev.apcli.devname%>" onclick="visit_url('<%=dev.apcli.devname%>',
|
||||
'<%=luci.dispatcher.build_url("admin", "network", "wifi", "vif_enable", dev.apcli.vifname)%>')"><%:ENABLE%></button>
|
||||
<button class="cbi-button cbi-button-remove" style="display:none" id="ApCliDisConnBtn_<%=dev.apcli.devname%>" onclick="visit_url_confirm('<%:Are you sure to DISCONNECT%> <%=dev.apcli.devname%>?',
|
||||
'<%=dev.apcli.devname%>','<%=luci.dispatcher.build_url("admin", "network", "wifi", "apcli_disconnect", dev.devname, dev.apcli.vifname)%>')"><%:DISCONNECT%></button>
|
||||
<button class="cbi-button cbi-button-reload" style="display:none" id="ApCliConnBtn_<%=dev.apcli.devname%>" onclick="visit_url_confirm('<%:Are you sure to RECONNECT%> <%=dev.apcli.devname%>?',
|
||||
'<%=dev.apcli.devname%>','<%=luci.dispatcher.build_url("admin", "network", "wifi", "apcli_connect", dev.devname, dev.apcli.vifname)%>')"><%:RECONNECT%></button>
|
||||
<button class="cbi-button cbi-button-edit" style="display:none" id="ApCliCfgBtn_<%=dev.apcli.devname%>" onclick="visit_url('<%=dev.apcli.devname%>',
|
||||
'<%=luci.dispatcher.build_url("admin", "network", "wifi", "apcli_cfg_view", dev.devname, dev.apcli.vifname)%>')"><%:CONFIG%></button>
|
||||
<% end %>
|
||||
</div>
|
||||
<div id="BusyText_<%=dev.apcli.devname%>" style="display:none">
|
||||
<big><strong><%:Processing request.%></strong></big>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<% end %>
|
||||
<!-- /apcli list -->
|
||||
<% end %>
|
||||
</tbody>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</table>
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="cbi-section">
|
||||
<h2><%:Station List%></h2>
|
||||
<table class="cbi-section-table" style="margin: auto" id="iw-assoclist">
|
||||
<tr class="cbi-section-table-titles">
|
||||
<th class="cbi-section-table-cell"><%:Interface%></th>
|
||||
<th class="cbi-section-table-cell">SSID</th>
|
||||
<th class="cbi-section-table-cell"><%:MAC-Address%></th>
|
||||
<th class="cbi-section-table-cell"><%:Hostname%></th>
|
||||
<th class="cbi-section-table-cell"><%:Security%></th>
|
||||
<th class="cbi-section-table-cell"><%:Signal%> (dBm)</th>
|
||||
<th class="cbi-section-table-cell"><%:TX Rate%></th>
|
||||
<th class="cbi-section-table-cell"><%:RX Rate%></th>
|
||||
<th class="cbi-section-table-cell"><%:Connected Time%></th>
|
||||
</tr>
|
||||
<tr class="cbi-section-table-row cbi-rowstyle-2">
|
||||
<td class="cbi-value-field" colspan="9">
|
||||
<em><%:Collecting data...%></em>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
<% end %>
|
||||
|
||||
<script>
|
||||
|
||||
function clean_stalist_table()
|
||||
{
|
||||
var table = document.getElementById('iw-assoclist');
|
||||
//console.log("clean_aplist_table.aplist len=" + table.rows.length);
|
||||
while(table.rows.length > 1)
|
||||
table.deleteRow(-1);
|
||||
}
|
||||
|
||||
function is_rssi_valid(rssi)
|
||||
{
|
||||
if (rssi == "-109" || rssi == "-127")
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
function insert_stalist_table(ifname, ssid, sta_list)
|
||||
{
|
||||
var i, tr_row, td_cell;
|
||||
var rssi_str, host_str;
|
||||
var tableid = document.getElementById('iw-assoclist');
|
||||
|
||||
for (i = 0; sta_list[i] ; i++){
|
||||
//console.log(sta_list[i]);
|
||||
tr_row = tableid.insertRow(-1);
|
||||
|
||||
tr_row.align = "center";
|
||||
td_cell = tr_row.insertCell(-1);
|
||||
td_cell.innerHTML = ifname;
|
||||
|
||||
td_cell = tr_row.insertCell(-1);
|
||||
td_cell.innerHTML = ssid;
|
||||
|
||||
td_cell = tr_row.insertCell(-1);
|
||||
td_cell.innerHTML = sta_list[i].MacAddr;
|
||||
|
||||
host_str = sta_list[i].hostname
|
||||
if (sta_list[i].ipv4 != "")
|
||||
host_str = host_str + ", " + sta_list[i].ipv4
|
||||
if (sta_list[i].ipv6 != "")
|
||||
host_str = host_str + "<br>" + sta_list[i].ipv6
|
||||
td_cell = tr_row.insertCell(-1);
|
||||
td_cell.innerHTML = host_str;
|
||||
|
||||
td_cell = tr_row.insertCell(-1);
|
||||
td_cell.innerHTML = sta_list[i].security;
|
||||
|
||||
rssi_str = sta_list[i].AvgRssi0;
|
||||
if (is_rssi_valid(sta_list[i].AvgRssi1))
|
||||
rssi_str = rssi_str + ", " + sta_list[i].AvgRssi1;
|
||||
if (is_rssi_valid(sta_list[i].AvgRssi2))
|
||||
rssi_str = rssi_str + ", " + sta_list[i].AvgRssi2;
|
||||
if (is_rssi_valid(sta_list[i].AvgRssi3))
|
||||
rssi_str = rssi_str + ", " + sta_list[i].AvgRssi3;
|
||||
td_cell = tr_row.insertCell(-1);
|
||||
td_cell.innerHTML = rssi_str;
|
||||
|
||||
//TxRate
|
||||
td_cell = tr_row.insertCell(-1);
|
||||
td_cell.innerHTML = sta_list[i].TxRate + "Mbps," + sta_list[i].Bw+ "MHz" + "<br>" + sta_list[i].PhyMode + ", " + sta_list[i].Mcs + ", " + sta_list[i].Gi;
|
||||
|
||||
//RxRate
|
||||
td_cell = tr_row.insertCell(-1);
|
||||
td_cell.innerHTML = sta_list[i].RxRate + "Mbps," + sta_list[i].LastBw + "MHz" + "<br>" + sta_list[i].LastPhyMode + ", " + sta_list[i].LastMcs + ", " + sta_list[i].LastGi;
|
||||
|
||||
td_cell = tr_row.insertCell(-1);
|
||||
td_cell.innerHTML = sta_list[i].Hr + ":" + sta_list[i].Min + ":" + sta_list[i].Sec;
|
||||
}
|
||||
}
|
||||
|
||||
function disable_all_buttons()
|
||||
{
|
||||
var inp = document.getElementsByTagName("BUTTON");
|
||||
for(var idx=0; idx < inp.length; idx++){
|
||||
inp[idx].disabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
function enable_all_buttons()
|
||||
{
|
||||
var inp = document.getElementsByTagName("BUTTON");
|
||||
for(var idx=0; idx < inp.length; idx++){
|
||||
inp[idx].disabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
function visit_url(idSuffix,to)
|
||||
{
|
||||
//disable_all_buttons();
|
||||
//document.getElementById("ActionBtns_"+idSuffix).style.display = "none";
|
||||
//document.getElementById("BusyText_"+idSuffix).style.display = "";
|
||||
location.href = to;
|
||||
}
|
||||
|
||||
function visit_url_confirm(msg, idSuffix, to) {
|
||||
var i = confirm(msg);
|
||||
if (i)
|
||||
visit_url(idSuffix,to);
|
||||
}
|
||||
|
||||
function add_vif(devName, vifPrefix, maxVif)
|
||||
{
|
||||
if (!confirm('<%:Are you sure to ADD wireless interface?%>'))
|
||||
return;
|
||||
disable_all_buttons();
|
||||
document.getElementById("ActionBtns_"+devName).style.display = "none";
|
||||
document.getElementById("BusyText_"+devName).style.display = "";
|
||||
if(isNaN(maxVif) || !/^\d{1,}$/.test(maxVif)){
|
||||
alert("Failed to add a new interface!\nERROR: Incorrect maximum supported VIF setting!\nmaxVif = " + maxVif);
|
||||
location.reload(true);
|
||||
return;
|
||||
}
|
||||
XHR.get('<%=luci.dispatcher.build_url("admin", "network", "wifi", "get_bssid_num")%>/' + devName, null,
|
||||
function(x)
|
||||
{
|
||||
try{
|
||||
var resp = JSON.parse(x.response);
|
||||
if(resp["status"] == "SUCCESS"){
|
||||
if(isNaN(resp["bssidNum"]) || !/^\d{1,}$/.test(resp["bssidNum"]) || parseInt(resp["bssidNum"]) > parseInt(maxVif)){
|
||||
alert("Failed to add a new interface!\nERROR: Device settings have been corrupted!\nBssidNum in Response is: " + resp["bssidNum"]);
|
||||
location.reload(true);
|
||||
}
|
||||
else if(parseInt(resp["bssidNum"]) == parseInt(maxVif)){
|
||||
alert("As the Device " + devName + " supports maximum " + maxVif + " virtual interfaces, no more virtual interfaces can be added!");
|
||||
}
|
||||
else{
|
||||
location.href = '<%=luci.dispatcher.build_url("admin", "network", "wifi", "vif_add_view")%>/' + devName + '/' + vifPrefix;
|
||||
}
|
||||
}
|
||||
else{
|
||||
alert("Failed to add a new interface!\nERROR: " + resp["status"]);
|
||||
}
|
||||
}
|
||||
catch(e){
|
||||
alert("Failed to add a new interface!\nERROR: Incorrect response received!");
|
||||
console.log("Failed to add a new interface!\nERROR: [" + e.name + "] " + e.message);
|
||||
}
|
||||
finally{
|
||||
enable_all_buttons();
|
||||
document.getElementById("ActionBtns_"+devName).style.display = "";
|
||||
document.getElementById("BusyText_"+devName).style.display = "none";
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
var stainfo = [];
|
||||
var stainfo_inited = 0;
|
||||
function staInfoHandler()
|
||||
{
|
||||
for (var i=0; stainfo[i]; i++) {
|
||||
//console.log(stainfo[i].ifname);
|
||||
XHR.poll(3, "<%=luci.dispatcher.build_url("admin", "network", "wifi", "sta_info")%>/" + stainfo[i].ifname, null,
|
||||
function(x)
|
||||
{
|
||||
try{
|
||||
stainfo_inited = 1;
|
||||
//console.log(x.responseText);
|
||||
var response = JSON.parse(x.responseText);
|
||||
for (var j=0; stainfo[j]; j++) {
|
||||
if (response[0].ifname == stainfo[j].ifname) {
|
||||
response.shift(); //delete first item
|
||||
stainfo[j].sta = response;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch(e){}
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
function printstainfo()
|
||||
{
|
||||
if (stainfo.length == 0) {
|
||||
clean_stalist_table();
|
||||
return;
|
||||
}
|
||||
if (stainfo_inited) {
|
||||
//console.log(stainfo);
|
||||
clean_stalist_table();
|
||||
var stabuf = stainfo;
|
||||
for (var i=0; stabuf[i]; i++) {
|
||||
insert_stalist_table(stabuf[i].ifname, stabuf[i].ssid, stabuf[i].sta);
|
||||
}
|
||||
}
|
||||
setTimeout(printstainfo, 2000);
|
||||
}
|
||||
|
||||
function apcliInfoTimerHandler(vifNameList,idx,remSec)
|
||||
{
|
||||
XHR.get('<%=luci.dispatcher.build_url("admin", "network", "wifi", "get_apcli_conn_info")%>/' + vifNameList[idx], null,
|
||||
function(x)
|
||||
{
|
||||
try{
|
||||
updateApCliInfoCb(vifNameList,idx,remSec,JSON.parse(x.response));
|
||||
}
|
||||
catch(e){
|
||||
var y={conn_state:"Disconnected"};
|
||||
updateApCliInfoCb(vifNameList,idx,0,y);
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
function updateApCliInfoCb(vifNameList,idx,remSec,connInfo)
|
||||
{
|
||||
var vifName = vifNameList[idx];
|
||||
if(connInfo.hasOwnProperty("conn_state") && connInfo["conn_state"] == "Connected"){
|
||||
document.getElementById("ConnStatus_"+vifName).innerHTML = "<%:Connected%>";
|
||||
document.getElementById("ApCliBssid_"+vifName).innerHTML = (connInfo.hasOwnProperty("bssid")) ? connInfo["bssid"] : "?";
|
||||
document.getElementById("ApCliSsid_"+vifName).innerHTML = (connInfo.hasOwnProperty("ssid")) ? connInfo["ssid"].replace(/ /g," ") : "";
|
||||
document.getElementById("LoadingBar_"+vifName).style.display = "none";
|
||||
document.getElementById("ApCliDownBtn_"+vifName).style.display = "";
|
||||
document.getElementById("ApCliDisConnBtn_"+vifName).style.display = "";
|
||||
document.getElementById("ApCliCfgBtn_"+vifName).style.display = "";
|
||||
document.getElementById("ConnInfo_"+vifName).style.display = "";
|
||||
if(idx < vifNameList.length - 1){
|
||||
setTimeout(apcliInfoTimerHandler,1000,vifNameList,idx+1,5);
|
||||
}
|
||||
}
|
||||
else{
|
||||
if(remSec > 1){
|
||||
setTimeout(apcliInfoTimerHandler,1000,vifNameList,idx,remSec - 1);
|
||||
}
|
||||
else{
|
||||
if (connInfo.hasOwnProperty("conn_state") && (connInfo["conn_state"] == "Connected")) {
|
||||
document.getElementById("ConnStatus_"+vifName).innerHTML = "<%:Connected%>";
|
||||
} else {
|
||||
document.getElementById("ConnStatus_"+vifName).innerHTML = "<%:Disconnected%>";
|
||||
}
|
||||
document.getElementById("LoadingBar_"+vifName).style.display = "none";
|
||||
document.getElementById("DisConnMsg_"+vifName).style.display = "";
|
||||
if (connInfo.hasOwnProperty("infc_state") && connInfo["infc_state"] == "up"){
|
||||
document.getElementById("ApCliDownBtn_"+vifName).style.display = "";
|
||||
}
|
||||
else{
|
||||
document.getElementById("ApCliUpBtn_"+vifName).style.display = "";
|
||||
}
|
||||
document.getElementById("ApCliConnBtn_"+vifName).style.display = "";
|
||||
document.getElementById("ApCliCfgBtn_"+vifName).style.display = "";
|
||||
if(idx < vifNameList.length - 1){
|
||||
setTimeout(apcliInfoTimerHandler,1000,vifNameList,idx+1,5);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
function updateApCliInfo()
|
||||
{
|
||||
var apCliInfcList=[];
|
||||
<% for _,dev in ipairs(devs) do %>
|
||||
<% if dev.apcli and dev.ApCliEnable == "1" then %>
|
||||
apCliInfcList.push("<%=dev.apcli.devname%>");
|
||||
<% end %>
|
||||
<% end %>
|
||||
if (apCliInfcList.length >= 1 ){
|
||||
setTimeout(apcliInfoTimerHandler,1000,apCliInfcList,0,3);
|
||||
}
|
||||
}
|
||||
|
||||
function get_apply_status_cb(rsp)
|
||||
{
|
||||
try{
|
||||
var r = JSON.parse(rsp);
|
||||
}
|
||||
catch(e){
|
||||
return;
|
||||
}
|
||||
if(r.status == "ON_PROGRESS"){
|
||||
var u = confirm("Device is applying the saved settings now!\n" +
|
||||
"It is recommended to wait until all the saved settings are applied.\n" +
|
||||
"Please click on 'OK' button to wait for the device.\n" +
|
||||
"or click on 'Cancel' button to configure the settings available in current web-page.");
|
||||
if (u == true) {
|
||||
location = '<%=luci.dispatcher.build_url("admin", "network", "wifi", "loading")%>' + window.location.pathname;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function get_apply_status()
|
||||
{
|
||||
XHR.get('<%=luci.dispatcher.build_url("admin", "network", "wifi", "get_apply_status")%>', null,
|
||||
function(x)
|
||||
{
|
||||
console.log(x);
|
||||
get_apply_status_cb(x.response);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
window.onload = function(){
|
||||
get_apply_status();
|
||||
updateApCliInfo();
|
||||
<% for _,dev in ipairs(devs) do %>
|
||||
<% if dev.vifs then%>
|
||||
<% for _,vif in ipairs(dev.vifs) do %>
|
||||
<% if vif.state == "up" then %>
|
||||
stainfo.push({"ifname": "<%=vif.vifname%>", "ssid": "<%=vif.__ssid%>", "sta": ""});
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
staInfoHandler(stainfo);
|
||||
printstainfo();
|
||||
}
|
||||
</script>
|
||||
<%+footer%>
|
File diff suppressed because it is too large
Load Diff
515
package/mtk/applications/luci-app-mtk/po/zh_Hans/mtk.po
Normal file
515
package/mtk/applications/luci-app-mtk/po/zh_Hans/mtk.po
Normal file
@ -0,0 +1,515 @@
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=UTF-8\n"
|
||||
|
||||
msgid "Auto"
|
||||
msgstr "自动"
|
||||
|
||||
msgid "Disable"
|
||||
msgstr "禁用"
|
||||
|
||||
msgid "US"
|
||||
msgstr "US (美国)"
|
||||
|
||||
msgid "JP"
|
||||
msgstr "JP (日本)"
|
||||
|
||||
msgid "FR"
|
||||
msgstr "FR (法国)"
|
||||
|
||||
msgid "IE"
|
||||
msgstr "IE (爱尔兰)"
|
||||
|
||||
msgid "CN"
|
||||
msgstr "CN (中国)"
|
||||
|
||||
msgid "NONE"
|
||||
msgstr "无"
|
||||
|
||||
msgid "Short"
|
||||
msgstr "Short (短)"
|
||||
|
||||
msgid "long"
|
||||
msgstr "Long (长)"
|
||||
|
||||
msgid "Enable"
|
||||
msgstr "启用"
|
||||
|
||||
msgid "Mandatory"
|
||||
msgstr "强制"
|
||||
|
||||
msgid "Always On"
|
||||
msgstr "始终开启"
|
||||
|
||||
msgid "Always Off"
|
||||
msgstr "始终关闭"
|
||||
|
||||
msgid "Tempature"
|
||||
msgstr "温度"
|
||||
|
||||
msgid "Tx Power"
|
||||
msgstr "发射功率"
|
||||
|
||||
msgid "Driver version"
|
||||
msgstr "驱动版本"
|
||||
|
||||
msgid "Current Band"
|
||||
msgstr "当前频段"
|
||||
|
||||
msgid "Work mode"
|
||||
msgstr "工作模式"
|
||||
|
||||
msgid "CONFIG"
|
||||
msgstr "配置"
|
||||
|
||||
msgid "RELOAD"
|
||||
msgstr "重载"
|
||||
|
||||
msgid "ADD"
|
||||
msgstr "添加"
|
||||
|
||||
msgid "RECONNECT"
|
||||
msgstr "重连"
|
||||
|
||||
msgid "DISABLE"
|
||||
msgstr "禁用"
|
||||
|
||||
msgid "ENABLE"
|
||||
msgstr "启用"
|
||||
|
||||
msgid "REMOVE"
|
||||
msgstr "移除"
|
||||
|
||||
msgid "Station List"
|
||||
msgstr "已连接站点"
|
||||
|
||||
msgid "Interface"
|
||||
msgstr "接口"
|
||||
|
||||
msgid "MAC-Address"
|
||||
msgstr "MAC地址"
|
||||
|
||||
msgid "Signal"
|
||||
msgstr "信号强度"
|
||||
|
||||
msgid "TX Rate"
|
||||
msgstr "发射速率"
|
||||
|
||||
msgid "Rx Rate"
|
||||
msgstr "接收速率"
|
||||
|
||||
msgid "Connected Time"
|
||||
msgstr "已连接时间"
|
||||
|
||||
msgid "Channel"
|
||||
msgstr "信道"
|
||||
|
||||
msgid "Security Mode"
|
||||
msgstr "加密方式"
|
||||
|
||||
msgid "Action"
|
||||
msgstr "动作"
|
||||
|
||||
msgid "Choose This"
|
||||
msgstr "选择"
|
||||
|
||||
msgid "40MHz HT Ext Channel"
|
||||
msgstr "HT 40MHz 扩展信道"
|
||||
|
||||
msgid "80MHz Second VHT Channel"
|
||||
msgstr "VHT 80MHz 第二信道"
|
||||
|
||||
msgid "Type"
|
||||
msgstr "接口类型"
|
||||
|
||||
msgid "Status"
|
||||
msgstr "状态"
|
||||
|
||||
msgid "DISCONNECT"
|
||||
msgstr "断开"
|
||||
|
||||
msgid "Connected"
|
||||
msgstr "已连接"
|
||||
|
||||
msgid "Disconnected"
|
||||
msgstr "未连接"
|
||||
|
||||
msgid "FATAL ERROR: Incorrect Profile Settings"
|
||||
msgstr "严重错误: 配置文件设置不正确"
|
||||
|
||||
msgid "Error: value not present in dat file"
|
||||
msgstr "错误:dat文件中未指定SSID值"
|
||||
|
||||
msgid "Wireless is disabled or not associated"
|
||||
msgstr "无线已禁用或未关联"
|
||||
|
||||
msgid "Processing request."
|
||||
msgstr "正在处理请求..."
|
||||
|
||||
msgid "need reload to apply changes"
|
||||
msgstr "请重启无线以应用设置"
|
||||
|
||||
msgid "Click here"
|
||||
msgstr "点击此处"
|
||||
|
||||
msgid "to apply changes"
|
||||
msgstr "以应用设置"
|
||||
|
||||
msgid "Wireless Mode"
|
||||
msgstr "无线模式"
|
||||
|
||||
msgid "Chip Configurations"
|
||||
msgstr "无线芯片设置"
|
||||
|
||||
msgid "Device Configuration"
|
||||
msgstr "无线设备设置"
|
||||
|
||||
msgid "Interface Configurations"
|
||||
msgstr "无线接口设置"
|
||||
|
||||
msgid "ApCli Configurations"
|
||||
msgstr "ApCli设置"
|
||||
|
||||
msgid "Loading connection information of"
|
||||
msgstr "正在加载连接信息"
|
||||
|
||||
msgid "ApCli Available Wireless Networks"
|
||||
msgstr "ApCli可用无线网络列表"
|
||||
|
||||
msgid "ApCli Connection Configurations"
|
||||
msgstr "ApCli连接设置"
|
||||
|
||||
msgid "Decline BA Request"
|
||||
msgstr "拒绝BlockAck请求"
|
||||
|
||||
msgid "Reverse Direction Grant (RDG)"
|
||||
msgstr "HT反向授权(RDG)"
|
||||
|
||||
msgid "BA Win size"
|
||||
msgstr "Block Ack窗口大小"
|
||||
|
||||
msgid "HT Disallow TKIP"
|
||||
msgstr "不允许HT TKIP"
|
||||
|
||||
msgid "Wi-Fi HWNAT"
|
||||
msgstr "启用Wi-Fi硬件加速"
|
||||
|
||||
msgid "E2pAccessMode"
|
||||
msgstr "EEPROM访问方式"
|
||||
|
||||
msgid "Beacon Interval"
|
||||
msgstr "Beacon间隔"
|
||||
|
||||
msgid "Data Beacon Rate (DTIM)"
|
||||
msgstr "DTIM周期"
|
||||
|
||||
msgid "BG Protection Mode"
|
||||
msgstr "BG保护模式"
|
||||
|
||||
msgid "Short Preamble"
|
||||
msgstr "启用短前导码"
|
||||
|
||||
msgid "TX Burst"
|
||||
msgstr "启用突发传输"
|
||||
|
||||
msgid "Short Slot"
|
||||
msgstr "启用短时槽"
|
||||
|
||||
msgid "Channel Auto"
|
||||
msgstr "自动信道"
|
||||
|
||||
msgid "BSS color"
|
||||
msgstr "BSS颜色代码"
|
||||
|
||||
msgid "TWT Support"
|
||||
msgstr "TWT节能机制"
|
||||
|
||||
msgid "Country Code"
|
||||
msgstr "国家代码"
|
||||
|
||||
msgid "Country Region"
|
||||
msgstr "国家区域"
|
||||
|
||||
msgid "Channel BandWidth"
|
||||
msgstr "信道宽度"
|
||||
|
||||
msgid "TX Stream"
|
||||
msgstr "发射空间流"
|
||||
|
||||
msgid "RX Stream"
|
||||
msgstr "接收空间流"
|
||||
|
||||
msgid "TX Power"
|
||||
msgstr "发射功率"
|
||||
|
||||
msgid "DFS"
|
||||
msgstr "动态频率选择(DFS)"
|
||||
|
||||
msgid "Beam Forming and MIMO Setting"
|
||||
msgstr "波束成形与MU-MIMO设置"
|
||||
|
||||
msgid "Spatial Reuse"
|
||||
msgstr "空间复用"
|
||||
|
||||
msgid "Auth Mode"
|
||||
msgstr "认证模式"
|
||||
|
||||
msgid "Encryption"
|
||||
msgstr "加密方式"
|
||||
|
||||
msgid "Key Renewal Interval"
|
||||
msgstr "组密钥更新周期"
|
||||
|
||||
msgid "Key"
|
||||
msgstr "密码"
|
||||
|
||||
msgid "MFPC"
|
||||
msgstr "兼容保护管理帧(MFPC)"
|
||||
|
||||
msgid "MFPR"
|
||||
msgstr "强制保护管理帧(MFPR)"
|
||||
|
||||
msgid "Hidden SSID"
|
||||
msgstr "隐藏SSID"
|
||||
|
||||
msgid "AP Isolation"
|
||||
msgstr "启用AP隔离"
|
||||
|
||||
msgid "WMM Capable"
|
||||
msgstr "启用WMM"
|
||||
|
||||
msgid "Fixed TX Rate"
|
||||
msgstr "固定发射速率"
|
||||
|
||||
msgid "HT STBC"
|
||||
msgstr "启用HT STBC"
|
||||
|
||||
msgid "HT LDPC"
|
||||
msgstr "启用HT LDPC"
|
||||
|
||||
msgid "VHT STBC"
|
||||
msgstr "启用VHT STBC"
|
||||
|
||||
msgid "VHT LDPC"
|
||||
msgstr "启用VHT LDPC"
|
||||
|
||||
msgid "DLS Capable"
|
||||
msgstr "启用终端直通(DLS)"
|
||||
|
||||
msgid "802.11k RRM"
|
||||
msgstr "启用 802.11k"
|
||||
|
||||
msgid "802.11r FT"
|
||||
msgstr "启用 802.11r"
|
||||
|
||||
msgid "APSD Capable"
|
||||
msgstr "启用节能模式(APSD)"
|
||||
|
||||
msgid "Fragment Threshold"
|
||||
msgstr "分片阈值"
|
||||
|
||||
msgid "RTS Threshold"
|
||||
msgstr "RTS阈值"
|
||||
|
||||
msgid "VHT Short GI"
|
||||
msgstr "VHT保护间隔(GI)"
|
||||
|
||||
msgid "VHT BW Signaling"
|
||||
msgstr "VHT动态频宽信令"
|
||||
|
||||
msgid "Dynamic"
|
||||
msgstr "动态"
|
||||
|
||||
msgid "HT Protection"
|
||||
msgstr "HT保护模式"
|
||||
|
||||
msgid "HT Guard Interval"
|
||||
msgstr "HT保护间隔(GI)"
|
||||
|
||||
msgid "HT Operating Mode"
|
||||
msgstr "HT操作模式"
|
||||
|
||||
msgid "HT Mixed Mode"
|
||||
msgstr "HT混合模式(Mixed)"
|
||||
|
||||
msgid "HT Green Field"
|
||||
msgstr "HT绿野模式(Green Field)"
|
||||
|
||||
msgid "Auto Block ACK"
|
||||
msgstr "自动块确认(BlockAck)"
|
||||
|
||||
msgid "Access Control"
|
||||
msgstr "访问控制"
|
||||
|
||||
msgid "Access Policy"
|
||||
msgstr "访问控制策略"
|
||||
|
||||
msgid "Access control MAC address list"
|
||||
msgstr "访问控制MAC地址列表"
|
||||
|
||||
msgid "White List"
|
||||
msgstr "白名单模式"
|
||||
|
||||
msgid "Black List"
|
||||
msgstr "黑名单模式"
|
||||
|
||||
msgid "Basic Settings"
|
||||
msgstr "基本设置"
|
||||
|
||||
msgid "HE Settings"
|
||||
msgstr "HE设置"
|
||||
|
||||
msgid "DL OFDMA"
|
||||
msgstr "下行OFDMA"
|
||||
|
||||
msgid "UL OFDMA"
|
||||
msgstr "上行OFDMA"
|
||||
|
||||
msgid "DL MU-MIMO"
|
||||
msgstr "下行MU-MIMO"
|
||||
|
||||
msgid "UL MU-MIMO"
|
||||
msgstr "上行MU-MIMO"
|
||||
|
||||
msgid "Scan Wireless Network"
|
||||
msgstr "扫描无线网络"
|
||||
|
||||
msgid "ApClient Mode"
|
||||
msgstr "AP客户端模式"
|
||||
|
||||
msgid "APClient/Repeater Mode."
|
||||
msgstr "AP客户端中继模式。"
|
||||
|
||||
msgid "MAC Repeater Mode"
|
||||
msgstr "启用MAC中继模式"
|
||||
|
||||
msgid "Root AP SSID"
|
||||
msgstr "上级AP SSID"
|
||||
|
||||
msgid "Root AP Channel"
|
||||
msgstr "上级AP信道"
|
||||
|
||||
msgid "Root AP Authentication Mode"
|
||||
msgstr "上级AP认证方式"
|
||||
|
||||
msgid "Root AP Encryption"
|
||||
msgstr "上级AP加密方式"
|
||||
|
||||
msgid "Root AP WPA Key"
|
||||
msgstr "上级AP WPA密钥"
|
||||
|
||||
msgid "ApCli MFPC"
|
||||
msgstr "ApCli兼容保护管理帧(MFPC)"
|
||||
|
||||
msgid "ApCli MFPR"
|
||||
msgstr "ApCli强制保护管理帧(MFPR)"
|
||||
|
||||
msgid "ApCli MFPSHA256"
|
||||
msgstr "ApCli启用SHA256保护管理帧"
|
||||
|
||||
msgid "WEP Default Key"
|
||||
msgstr "WEP默认密钥ID"
|
||||
|
||||
msgid "Root AP WEP Key"
|
||||
msgstr "上级AP WEP密钥"
|
||||
|
||||
msgid "Length"
|
||||
msgstr "长度"
|
||||
|
||||
msgid "WEP Key"
|
||||
msgstr "WEP密钥"
|
||||
|
||||
msgid "WEP Key Type"
|
||||
msgstr "WEP密钥类型"
|
||||
|
||||
msgid "PMK Cache Period"
|
||||
msgstr "PMK缓存周期"
|
||||
|
||||
msgid "WEP for 8021X"
|
||||
msgstr "启用8021X WEP"
|
||||
|
||||
msgid "Pre-Authentication"
|
||||
msgstr "启用预认证"
|
||||
|
||||
msgid "Radius Server IP"
|
||||
msgstr "Radius认证服务器IP"
|
||||
|
||||
msgid "Radius Server Port"
|
||||
msgstr "Radius认证服务器端口"
|
||||
|
||||
msgid "Radius Key"
|
||||
msgstr "Radius密钥"
|
||||
|
||||
msgid "Radius Session Timeout"
|
||||
msgstr "Radius会话超时时间"
|
||||
|
||||
msgid "Radius Idle Timeout"
|
||||
msgstr "Radius空闲超时时间"
|
||||
|
||||
msgid "MFPSHA256"
|
||||
msgstr "启用SHA256保护管理帧"
|
||||
|
||||
msgid "Please wait while the settings are being applied."
|
||||
msgstr "正在应用设置,请稍候。"
|
||||
|
||||
msgid "Please wait while the request is being processed."
|
||||
msgstr "正在处理请求,请稍候。"
|
||||
|
||||
msgid "No wireless device found!"
|
||||
msgstr "未找到无线设备!"
|
||||
|
||||
msgid "Please input a valid radius server port number."
|
||||
msgstr "请输入有效的Radius服务器端口号。"
|
||||
|
||||
msgid "The radius shared secret contains invalid characters."
|
||||
msgstr "Radius密钥包含无效字符。"
|
||||
|
||||
msgid "Please input a valid session timeout number or u may have left it empty."
|
||||
msgstr "请输入有效的Radius会话超时时间。"
|
||||
|
||||
msgid "Radius session time out is empty."
|
||||
msgstr "Radius会话超时时间为空。"
|
||||
|
||||
msgid "Please input a valid idle timeout number or u may have left it empty."
|
||||
msgstr "请输入有效的Radius空闲超时时间。"
|
||||
|
||||
msgid "Radius idle time out is empty."
|
||||
msgstr "Radius空闲超时时间为空。"
|
||||
|
||||
msgid "IGMP Snooping"
|
||||
msgstr "IGMP 侦听"
|
||||
|
||||
msgid "Security"
|
||||
msgstr "安全性"
|
||||
|
||||
msgid "Restore Profile to Factory Settings"
|
||||
msgstr "恢复无线配置文件为出厂设置"
|
||||
|
||||
msgid "Are you sure to RELOAD"
|
||||
msgstr "你确认要重载"
|
||||
|
||||
msgid "Are you sure to DISABLE"
|
||||
msgstr "你确认要禁用"
|
||||
|
||||
msgid "Are you sure to REMOVE"
|
||||
msgstr "你确认要移除"
|
||||
|
||||
msgid "Are you sure to RECONNECT"
|
||||
msgstr "你确认要重新连接"
|
||||
|
||||
msgid "Are you sure to DISCONNECT"
|
||||
msgstr "你确认要断开"
|
||||
|
||||
msgid "Are you sure to ADD wireless interface?"
|
||||
msgstr "你确认要新增无线接口?"
|
||||
|
||||
msgid "Enable wireless device"
|
||||
msgstr "启用此无线设备"
|
||||
|
||||
msgid "Wireless device is disabled"
|
||||
msgstr "无线设备已禁用"
|
||||
|
||||
msgid "Kick STA Threshold"
|
||||
msgstr "弱信号剔除阈值"
|
||||
|
||||
msgid "STA Assoc Threshold"
|
||||
msgstr "弱信号接入阈值"
|
177
package/mtk/applications/luci-app-mtk/root/sbin/l1dat
Normal file
177
package/mtk/applications/luci-app-mtk/root/sbin/l1dat
Normal file
@ -0,0 +1,177 @@
|
||||
#!/usr/bin/lua
|
||||
|
||||
-- Constant Definition
|
||||
local FW_PATH = "/lib/firmware/"
|
||||
local MTD_PATH = "/dev/"
|
||||
local MTD_TABLE = "/proc/mtd"
|
||||
local E2P_PART_NAME = "Factory"
|
||||
local E2P_FILE_NAME = "e2p"
|
||||
|
||||
|
||||
function show_usage()
|
||||
print("Usage: l1dat genconfig | dbg | idx2if idx | if2zone ifname | if2dat ifname | zone2if zone | if2dbdcidx ifname")
|
||||
end
|
||||
|
||||
function print_err(msg)
|
||||
io.stderr:write("[ERR][l1dat] "..msg)
|
||||
end
|
||||
|
||||
if not pcall(require, "l1dat_parser") then
|
||||
if arg[1] == "dbg" then
|
||||
print_err("Load l1dat_parser module failed\n")
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
local l1parser = require("l1dat_parser")
|
||||
local l1dat = l1parser.load_l1_profile(l1parser.L1_DAT_PATH)
|
||||
|
||||
if not l1dat then
|
||||
if arg[1] == "dbg" then
|
||||
print_err("l1profile.dat is ivalid\n")
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
function read_pipe(pipe)
|
||||
local fp = io.popen(pipe)
|
||||
local txt = fp:read("*a")
|
||||
fp:close()
|
||||
return txt
|
||||
end
|
||||
|
||||
function eeprom_extract(part, offset, size, bin_name)
|
||||
local part_name = part or E2P_PART_NAME
|
||||
local dump_name = bin_name or E2P_FILE_NAME
|
||||
|
||||
if not offset or not size or tonumber(offset) < 0 or tonumber(size) < 0 then
|
||||
print_err("Invalid offset or size value")
|
||||
return
|
||||
end
|
||||
local offset_decimal = string.format("%d", offset)
|
||||
local size_decimal = string.format("%d", size)
|
||||
|
||||
local cmd = "cat "..MTD_TABLE.." | grep "..part_name
|
||||
local mtd = read_pipe(cmd)
|
||||
if not mtd or mtd == "" then
|
||||
print_err("mtd partition "..part_name.." not found")
|
||||
return
|
||||
end
|
||||
|
||||
cmd = "[ -e "..FW_PATH.." ] || mkdir "..FW_PATH
|
||||
os.execute(cmd)
|
||||
|
||||
local mtd_node = "/dev/"..string.match(mtd, "(mtd[%d]+)")
|
||||
cmd = "dd if="..mtd_node.." of="..FW_PATH..dump_name.." bs=1 skip="..offset_decimal.." count="..size_decimal.." seek="..offset_decimal.." conv=notrunc 2>/dev/null"
|
||||
os.execute(cmd)
|
||||
end
|
||||
|
||||
local action0 = {
|
||||
["dbg"] = function()
|
||||
show_usage()
|
||||
end,
|
||||
|
||||
["genconfig"] = function()
|
||||
local seen = {}
|
||||
local dridx = l1parser.DEV_RINDEX
|
||||
local cmd = ""
|
||||
local dir = ""
|
||||
for name, dev in pairs(l1dat[dridx]) do
|
||||
if not seen[dev] then
|
||||
seen[dev] = true
|
||||
dir = string.match(dev["profile_path"], "^(.+)/")
|
||||
--print("mkdir -p "..dir)
|
||||
os.execute("mkdir -p "..dir)
|
||||
cmd = "ralink_init gen "..dev["nvram_zone"].." "..dev["profile_path"]
|
||||
--print(cmd)
|
||||
os.execute(cmd)
|
||||
|
||||
eeprom_extract(E2P_PART_NAME, dev.EEPROM_offset, dev.EEPROM_size, dev.EEPROM_name)
|
||||
end
|
||||
end
|
||||
end,
|
||||
|
||||
["if2zone"] = function(ifname)
|
||||
if not ifname then return end
|
||||
|
||||
local zone = l1parser.l1_ifname_to_zone(ifname) or ""
|
||||
print(zone);
|
||||
end,
|
||||
|
||||
["if2dat"] = function(ifname)
|
||||
if not ifname then return end
|
||||
|
||||
local dat_path = l1parser.l1_ifname_to_datpath(ifname) or ""
|
||||
print(dat_path)
|
||||
end,
|
||||
|
||||
["zone2if"] = function(zone)
|
||||
if not zone then return end
|
||||
|
||||
local main_if, ext_if, apcli, wds, mesh = l1parser.l1_zone_to_ifname(zone)
|
||||
|
||||
if main_if then
|
||||
print(main_if.." "..ext_if.." "..apcli.." "..wds.." "..mesh)
|
||||
end
|
||||
end,
|
||||
|
||||
["idx2if"] = function(idx)
|
||||
if not idx then return end
|
||||
|
||||
idx = tonumber(idx)
|
||||
|
||||
local band_num = l1parser.MAX_NUM_DBDC_BAND
|
||||
local dbdc_if
|
||||
local count = 0
|
||||
for k, v in pairs(l1dat) do
|
||||
-- check if last dbdc exists
|
||||
dbdc_if = l1parser.token_get(v.main_ifname, band_num, nil)
|
||||
if dbdc_if then
|
||||
count = count + band_num;
|
||||
else
|
||||
count = count + 1
|
||||
end
|
||||
|
||||
if not dbdc_if and count == idx then
|
||||
print(v.main_ifname)
|
||||
|
||||
break
|
||||
end
|
||||
|
||||
if count >= idx then -- dbdc case
|
||||
local token_num = band_num - ( count - idx )
|
||||
print(l1parser.token_get(v.main_ifname, token_num, nil))
|
||||
|
||||
break
|
||||
end
|
||||
end
|
||||
end,
|
||||
|
||||
["if2dbdcidx"] = function(ifname)
|
||||
if not ifname then return end
|
||||
|
||||
local ridx = l1parser.IF_RINDEX
|
||||
|
||||
if not l1dat[ridx][ifname] then return end
|
||||
|
||||
print(l1dat[ridx][ifname]["subidx"] or "0")
|
||||
end
|
||||
}
|
||||
|
||||
if #arg == 0 then
|
||||
show_usage()
|
||||
return
|
||||
end
|
||||
|
||||
if action0[arg[1]] then
|
||||
if #arg == 1 then
|
||||
--print("#arg == 1", arg[1])
|
||||
action0[arg[1]]()
|
||||
elseif #arg == 2 then
|
||||
--print("#arg == 1", arg[1], arg[2])
|
||||
action0[arg[1]](arg[2])
|
||||
end
|
||||
else
|
||||
print_err("invalid arg \""..arg[1].."\"\n");
|
||||
end
|
||||
|
@ -0,0 +1,337 @@
|
||||
local _tl_compat; if (tonumber((_VERSION or ''):match('[%d.]*$')) or 0) < 5.3 then local p, m = pcall(require, 'compat53.module'); if p then _tl_compat = m end end; local math = _tl_compat and _tl_compat.math or math; local string = _tl_compat and _tl_compat.string or string; local table = _tl_compat and _tl_compat.table or table
|
||||
local inspect = {Options = {}, }
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
inspect._VERSION = 'inspect.lua 3.1.0'
|
||||
inspect._URL = 'http://github.com/kikito/inspect.lua'
|
||||
inspect._DESCRIPTION = 'human-readable representations of tables'
|
||||
inspect._LICENSE = [[
|
||||
MIT LICENSE
|
||||
|
||||
Copyright (c) 2022 Enrique García Cota
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included
|
||||
in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
]]
|
||||
inspect.KEY = setmetatable({}, { __tostring = function() return 'inspect.KEY' end })
|
||||
inspect.METATABLE = setmetatable({}, { __tostring = function() return 'inspect.METATABLE' end })
|
||||
|
||||
local tostring = tostring
|
||||
local rep = string.rep
|
||||
local match = string.match
|
||||
local char = string.char
|
||||
local gsub = string.gsub
|
||||
local fmt = string.format
|
||||
|
||||
local function rawpairs(t)
|
||||
return next, t, nil
|
||||
end
|
||||
|
||||
|
||||
|
||||
local function smartQuote(str)
|
||||
if match(str, '"') and not match(str, "'") then
|
||||
return "'" .. str .. "'"
|
||||
end
|
||||
return '"' .. gsub(str, '"', '\\"') .. '"'
|
||||
end
|
||||
|
||||
|
||||
local shortControlCharEscapes = {
|
||||
["\a"] = "\\a", ["\b"] = "\\b", ["\f"] = "\\f", ["\n"] = "\\n",
|
||||
["\r"] = "\\r", ["\t"] = "\\t", ["\v"] = "\\v", ["\127"] = "\\127",
|
||||
}
|
||||
local longControlCharEscapes = { ["\127"] = "\127" }
|
||||
for i = 0, 31 do
|
||||
local ch = char(i)
|
||||
if not shortControlCharEscapes[ch] then
|
||||
shortControlCharEscapes[ch] = "\\" .. i
|
||||
longControlCharEscapes[ch] = fmt("\\%03d", i)
|
||||
end
|
||||
end
|
||||
|
||||
local function escape(str)
|
||||
return (gsub(gsub(gsub(str, "\\", "\\\\"),
|
||||
"(%c)%f[0-9]", longControlCharEscapes),
|
||||
"%c", shortControlCharEscapes))
|
||||
end
|
||||
|
||||
local function isIdentifier(str)
|
||||
return type(str) == "string" and not not str:match("^[_%a][_%a%d]*$")
|
||||
end
|
||||
|
||||
local flr = math.floor
|
||||
local function isSequenceKey(k, sequenceLength)
|
||||
return type(k) == "number" and
|
||||
flr(k) == k and
|
||||
1 <= (k) and
|
||||
k <= sequenceLength
|
||||
end
|
||||
|
||||
local defaultTypeOrders = {
|
||||
['number'] = 1, ['boolean'] = 2, ['string'] = 3, ['table'] = 4,
|
||||
['function'] = 5, ['userdata'] = 6, ['thread'] = 7,
|
||||
}
|
||||
|
||||
local function sortKeys(a, b)
|
||||
local ta, tb = type(a), type(b)
|
||||
|
||||
|
||||
if ta == tb and (ta == 'string' or ta == 'number') then
|
||||
return (a) < (b)
|
||||
end
|
||||
|
||||
local dta = defaultTypeOrders[ta] or 100
|
||||
local dtb = defaultTypeOrders[tb] or 100
|
||||
|
||||
|
||||
return dta == dtb and ta < tb or dta < dtb
|
||||
end
|
||||
|
||||
local function getKeys(t)
|
||||
|
||||
local seqLen = 1
|
||||
while rawget(t, seqLen) ~= nil do
|
||||
seqLen = seqLen + 1
|
||||
end
|
||||
seqLen = seqLen - 1
|
||||
|
||||
local keys, keysLen = {}, 0
|
||||
for k in rawpairs(t) do
|
||||
if not isSequenceKey(k, seqLen) then
|
||||
keysLen = keysLen + 1
|
||||
keys[keysLen] = k
|
||||
end
|
||||
end
|
||||
table.sort(keys, sortKeys)
|
||||
return keys, keysLen, seqLen
|
||||
end
|
||||
|
||||
local function countCycles(x, cycles)
|
||||
if type(x) == "table" then
|
||||
if cycles[x] then
|
||||
cycles[x] = cycles[x] + 1
|
||||
else
|
||||
cycles[x] = 1
|
||||
for k, v in rawpairs(x) do
|
||||
countCycles(k, cycles)
|
||||
countCycles(v, cycles)
|
||||
end
|
||||
countCycles(getmetatable(x), cycles)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function makePath(path, a, b)
|
||||
local newPath = {}
|
||||
local len = #path
|
||||
for i = 1, len do newPath[i] = path[i] end
|
||||
|
||||
newPath[len + 1] = a
|
||||
newPath[len + 2] = b
|
||||
|
||||
return newPath
|
||||
end
|
||||
|
||||
|
||||
local function processRecursive(process,
|
||||
item,
|
||||
path,
|
||||
visited)
|
||||
if item == nil then return nil end
|
||||
if visited[item] then return visited[item] end
|
||||
|
||||
local processed = process(item, path)
|
||||
if type(processed) == "table" then
|
||||
local processedCopy = {}
|
||||
visited[item] = processedCopy
|
||||
local processedKey
|
||||
|
||||
for k, v in rawpairs(processed) do
|
||||
processedKey = processRecursive(process, k, makePath(path, k, inspect.KEY), visited)
|
||||
if processedKey ~= nil then
|
||||
processedCopy[processedKey] = processRecursive(process, v, makePath(path, processedKey), visited)
|
||||
end
|
||||
end
|
||||
|
||||
local mt = processRecursive(process, getmetatable(processed), makePath(path, inspect.METATABLE), visited)
|
||||
if type(mt) ~= 'table' then mt = nil end
|
||||
setmetatable(processedCopy, mt)
|
||||
processed = processedCopy
|
||||
end
|
||||
return processed
|
||||
end
|
||||
|
||||
local function puts(buf, str)
|
||||
buf.n = buf.n + 1
|
||||
buf[buf.n] = str
|
||||
end
|
||||
|
||||
|
||||
|
||||
local Inspector = {}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
local Inspector_mt = { __index = Inspector }
|
||||
|
||||
local function tabify(inspector)
|
||||
puts(inspector.buf, inspector.newline .. rep(inspector.indent, inspector.level))
|
||||
end
|
||||
|
||||
function Inspector:getId(v)
|
||||
local id = self.ids[v]
|
||||
local ids = self.ids
|
||||
if not id then
|
||||
local tv = type(v)
|
||||
id = (ids[tv] or 0) + 1
|
||||
ids[v], ids[tv] = id, id
|
||||
end
|
||||
return tostring(id)
|
||||
end
|
||||
|
||||
function Inspector:putValue(v)
|
||||
local buf = self.buf
|
||||
local tv = type(v)
|
||||
if tv == 'string' then
|
||||
puts(buf, smartQuote(escape(v)))
|
||||
elseif tv == 'number' or tv == 'boolean' or tv == 'nil' or
|
||||
tv == 'cdata' or tv == 'ctype' then
|
||||
puts(buf, tostring(v))
|
||||
elseif tv == 'table' and not self.ids[v] then
|
||||
local t = v
|
||||
|
||||
if t == inspect.KEY or t == inspect.METATABLE then
|
||||
puts(buf, tostring(t))
|
||||
elseif self.level >= self.depth then
|
||||
puts(buf, '{...}')
|
||||
else
|
||||
if self.cycles[t] > 1 then puts(buf, fmt('<%d>', self:getId(t))) end
|
||||
|
||||
local keys, keysLen, seqLen = getKeys(t)
|
||||
|
||||
puts(buf, '{')
|
||||
self.level = self.level + 1
|
||||
|
||||
for i = 1, seqLen + keysLen do
|
||||
if i > 1 then puts(buf, ',') end
|
||||
if i <= seqLen then
|
||||
puts(buf, ' ')
|
||||
self:putValue(t[i])
|
||||
else
|
||||
local k = keys[i - seqLen]
|
||||
tabify(self)
|
||||
if isIdentifier(k) then
|
||||
puts(buf, k)
|
||||
else
|
||||
puts(buf, "[")
|
||||
self:putValue(k)
|
||||
puts(buf, "]")
|
||||
end
|
||||
puts(buf, ' = ')
|
||||
self:putValue(t[k])
|
||||
end
|
||||
end
|
||||
|
||||
local mt = getmetatable(t)
|
||||
if type(mt) == 'table' then
|
||||
if seqLen + keysLen > 0 then puts(buf, ',') end
|
||||
tabify(self)
|
||||
puts(buf, '<metatable> = ')
|
||||
self:putValue(mt)
|
||||
end
|
||||
|
||||
self.level = self.level - 1
|
||||
|
||||
if keysLen > 0 or type(mt) == 'table' then
|
||||
tabify(self)
|
||||
elseif seqLen > 0 then
|
||||
puts(buf, ' ')
|
||||
end
|
||||
|
||||
puts(buf, '}')
|
||||
end
|
||||
|
||||
else
|
||||
puts(buf, fmt('<%s %d>', tv, self:getId(v)))
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
function inspect.inspect(root, options)
|
||||
options = options or {}
|
||||
|
||||
local depth = options.depth or (math.huge)
|
||||
local newline = options.newline or '\n'
|
||||
local indent = options.indent or ' '
|
||||
local process = options.process
|
||||
|
||||
if process then
|
||||
root = processRecursive(process, root, {}, {})
|
||||
end
|
||||
|
||||
local cycles = {}
|
||||
countCycles(root, cycles)
|
||||
|
||||
local inspector = setmetatable({
|
||||
buf = { n = 0 },
|
||||
ids = {},
|
||||
cycles = cycles,
|
||||
depth = depth,
|
||||
level = 0,
|
||||
newline = newline,
|
||||
indent = indent,
|
||||
}, Inspector_mt)
|
||||
|
||||
inspector:putValue(root)
|
||||
|
||||
return table.concat(inspector.buf)
|
||||
end
|
||||
|
||||
setmetatable(inspect, {
|
||||
__call = function(_, root, options)
|
||||
return inspect.inspect(root, options)
|
||||
end,
|
||||
})
|
||||
|
||||
return inspect
|
@ -0,0 +1,349 @@
|
||||
#!/usr/bin/env lua
|
||||
|
||||
--[[
|
||||
* A lua library to manipulate mtk's wifi driver. used in luci-app-mtk.
|
||||
*
|
||||
* Copyright (C) 2016 MTK <support@mediatek.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License version 2.1
|
||||
* as published by the Free Software Foundation
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
]]
|
||||
|
||||
local l1dat_parser = {
|
||||
L1_DAT_PATH = "/etc/wireless/l1profile.dat",
|
||||
IF_RINDEX = "ifname_ridx",
|
||||
DEV_RINDEX = "devname_ridx",
|
||||
MAX_NUM_APCLI = 1,
|
||||
MAX_NUM_WDS = 4,
|
||||
MAX_NUM_MESH = 1,
|
||||
MAX_NUM_EXTIF = 16,
|
||||
MAX_NUM_DBDC_BAND = 2,
|
||||
}
|
||||
|
||||
local l1cfg_options = {
|
||||
ext_ifname="",
|
||||
apcli_ifname="apcli",
|
||||
wds_ifname="wds",
|
||||
mesh_ifname="mesh"
|
||||
}
|
||||
|
||||
function l1dat_parser.__trim(s)
|
||||
if s then return (s:gsub("^%s*(.-)%s*$", "%1")) end
|
||||
end
|
||||
|
||||
function l1dat_parser.__cfg2list(str)
|
||||
-- delimeter == ";"
|
||||
local i = 1
|
||||
local list = {}
|
||||
for k in string.gmatch(str, "([^;]+)") do
|
||||
list[i] = k
|
||||
i = i + 1
|
||||
end
|
||||
return list
|
||||
end
|
||||
|
||||
function l1dat_parser.token_get(str, n, v)
|
||||
-- n starts from 1
|
||||
-- v is the backup in case token n is nil
|
||||
if not str then return v end
|
||||
local tmp = l1dat_parser.__cfg2list(str)
|
||||
return tmp[tonumber(n)] or v
|
||||
end
|
||||
|
||||
function l1dat_parser.add_default_value(l1cfg)
|
||||
for k, v in ipairs(l1cfg) do
|
||||
|
||||
for opt, default in pairs(l1cfg_options) do
|
||||
if ( opt == "ext_ifname" ) then
|
||||
v[opt] = v[opt] or v["main_ifname"].."_"
|
||||
else
|
||||
v[opt] = v[opt] or default..k.."_"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return l1cfg
|
||||
end
|
||||
|
||||
function l1dat_parser.get_value_by_idx(devidx, mainidx, subidx, key)
|
||||
--print("Enter l1dat_parser.get_value_by_idx("..devidx..","..mainidx..", "..subidx..", "..key..")<br>")
|
||||
if not devidx or not mainidx or not key then return end
|
||||
|
||||
local devs = l1dat_parser.load_l1_profile(l1dat_parser.L1_DAT_PATH)
|
||||
if not devs then return end
|
||||
|
||||
local dev_ridx = l1dat_parser.DEV_RINDEX
|
||||
local sidx = subidx or 1
|
||||
local devname1 = devidx.."."..mainidx
|
||||
local devname2 = devidx.."."..mainidx.."."..sidx
|
||||
|
||||
--print("devnam1=", devname1, "devname2=", devname2, "<br>")
|
||||
return devs[dev_ridx][devname2] and devs[dev_ridx][devname2][key]
|
||||
or devs[dev_ridx][devname1] and devs[dev_ridx][devname1][key]
|
||||
end
|
||||
|
||||
-- path to zone is 1 to 1 mapping
|
||||
function l1dat_parser.l1_path_to_zone(path)
|
||||
--print("Enter l1dat_parser.l1_path_to_zone("..path..")<br>")
|
||||
if not path then return end
|
||||
|
||||
local devs = l1dat_parser.load_l1_profile(l1dat_parser.L1_DAT_PATH)
|
||||
if not devs then return end
|
||||
|
||||
for _, dev in pairs(devs[l1dat_parser.IF_RINDEX]) do
|
||||
if dev.profile_path == path then
|
||||
return dev.nvram_zone
|
||||
end
|
||||
end
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
-- zone to path is 1 to n mapping
|
||||
function l1dat_parser.l1_zone_to_path(zone)
|
||||
if not zone then return end
|
||||
|
||||
local devs = l1dat_parser.load_l1_profile(l1dat_parser.L1_DAT_PATH)
|
||||
if not devs then return end
|
||||
|
||||
local plist = {}
|
||||
for _, dev in pairs(devs[l1dat_parser.IF_RINDEX]) do
|
||||
if dev.nvram_zone == zone then
|
||||
if not next(plist) then
|
||||
table.insert(plist,dev.profile_path)
|
||||
else
|
||||
local plist_str = table.concat(plist)
|
||||
if not plist_str:match(dev.profile_path) then
|
||||
table.insert(plist,dev.profile_path)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return next(plist) and plist or nil
|
||||
end
|
||||
|
||||
function l1dat_parser.l1_ifname_to_datpath(ifname)
|
||||
if not ifname then return end
|
||||
|
||||
local devs = l1dat_parser.load_l1_profile(l1dat_parser.L1_DAT_PATH)
|
||||
if not devs then return end
|
||||
|
||||
local ridx = l1dat_parser.IF_RINDEX
|
||||
return devs[ridx][ifname] and devs[ridx][ifname].profile_path
|
||||
end
|
||||
|
||||
function l1dat_parser.l1_ifname_to_zone(ifname)
|
||||
if not ifname then return end
|
||||
|
||||
local devs = l1dat_parser.load_l1_profile(l1dat_parser.L1_DAT_PATH)
|
||||
if not devs then return end
|
||||
|
||||
local ridx = l1dat_parser.IF_RINDEX
|
||||
return devs[ridx][ifname] and devs[ridx][ifname].nvram_zone
|
||||
end
|
||||
|
||||
function l1dat_parser.l1_zone_to_ifname(zone)
|
||||
if not zone then return end
|
||||
|
||||
local devs = l1dat_parser.load_l1_profile(l1dat_parser.L1_DAT_PATH)
|
||||
if not devs then return end
|
||||
|
||||
local zone_dev
|
||||
for _, dev in pairs(devs[l1dat_parser.DEV_RINDEX]) do
|
||||
if dev.nvram_zone == zone then
|
||||
zone_dev = dev
|
||||
end
|
||||
end
|
||||
|
||||
if not zone_dev then
|
||||
return nil
|
||||
else
|
||||
return zone_dev.main_ifname, zone_dev.ext_ifname, zone_dev.apcli_ifname, zone_dev.wds_ifname, zone_dev.mesh_ifname
|
||||
end
|
||||
end
|
||||
|
||||
-- input: L1 profile path.
|
||||
-- output A table, devs, contains
|
||||
-- 1. devs[%d] = table of each INDEX# in the L1 profile
|
||||
-- 2. devs.ifname_ridx[ifname]
|
||||
-- = table of each ifname and point to relevant contain in dev[$d]
|
||||
-- 3. devs.devname_ridx[devname] similar to devs.ifnameridx, but use devname.
|
||||
-- devname = INDEX#_value.mainidx(.subidx)
|
||||
-- Using *_ridx do not need to handle name=k1;k2 case of DBDC card.
|
||||
function l1dat_parser.load_l1_profile(path)
|
||||
local devs = setmetatable({}, {__index=
|
||||
function(tbl, key)
|
||||
local util = require("luci.util")
|
||||
--print("metatable function:", util.serialize_data(tbl), key)
|
||||
--print("-----------------------------------------------")
|
||||
if ( string.match(key, "^%d+")) then
|
||||
tbl[key] = {}
|
||||
return tbl[key]
|
||||
end
|
||||
end
|
||||
})
|
||||
local nixio = require("nixio")
|
||||
local chipset_num = {}
|
||||
local dir = io.popen("ls /etc/wireless/")
|
||||
if not dir then return end
|
||||
local fd = io.open(path, "r")
|
||||
if not fd then return end
|
||||
|
||||
-- convert l1 profile into lua table
|
||||
for line in fd:lines() do
|
||||
line = l1dat_parser.__trim(line)
|
||||
if string.byte(line) ~= string.byte("#") then
|
||||
local i = string.find(line, "=")
|
||||
if i then
|
||||
local k, v, k1, k2
|
||||
k = l1dat_parser.__trim( string.sub(line, 1, i-1) )
|
||||
v = l1dat_parser.__trim( string.sub(line, i+1) )
|
||||
k1, k2 = string.match(k, "INDEX(%d+)_(.+)")
|
||||
if k1 then
|
||||
k1 = tonumber(k1) + 1
|
||||
if devs[k1][k2] then
|
||||
nixio.syslog("warning", "skip repeated key"..line)
|
||||
end
|
||||
devs[k1][k2] = v or ""
|
||||
else
|
||||
k1 = string.match(k, "INDEX(%d+)")
|
||||
k1 = tonumber(k1) + 1
|
||||
devs[k1]["INDEX"] = v
|
||||
|
||||
chipset_num[v] = (not chipset_num[v] and 1) or chipset_num[v] + 1
|
||||
devs[k1]["mainidx"] = chipset_num[v]
|
||||
end
|
||||
--else
|
||||
-- nixio.syslog("warning", "skip line without '=' "..line)
|
||||
end
|
||||
--else
|
||||
-- nixio.syslog("warning", "skip comment line "..line)
|
||||
end
|
||||
end
|
||||
|
||||
l1dat_parser.add_default_value(devs)
|
||||
--local util = require("luci.util")
|
||||
--local seen2 = {}
|
||||
-- print("Before setup ridx", util.serialize_data(devs, seen2))
|
||||
|
||||
-- Force to setup reverse indice for quick search.
|
||||
-- Benifit:
|
||||
-- 1. O(1) search with ifname, devname
|
||||
-- 2. Seperate DBDC name=k1;k2 format in the L1 profile into each
|
||||
-- ifname, devname.
|
||||
local dbdc_if = {}
|
||||
local ridx = l1dat_parser.IF_RINDEX
|
||||
local dridx = l1dat_parser.DEV_RINDEX
|
||||
local band_num = l1dat_parser.MAX_NUM_DBDC_BAND
|
||||
local k, v, dev, i , j, last
|
||||
local devname
|
||||
devs[ridx] = {}
|
||||
devs[dridx] = {}
|
||||
for _, dev in ipairs(devs) do
|
||||
dbdc_if[band_num] = l1dat_parser.token_get(dev.main_ifname, band_num, nil)
|
||||
if dbdc_if[band_num] then
|
||||
for i = 1, band_num - 1 do
|
||||
dbdc_if[i] = l1dat_parser.token_get(dev.main_ifname, i, nil)
|
||||
end
|
||||
for i = 1, band_num do
|
||||
devs[ridx][dbdc_if[i]] = {}
|
||||
devs[ridx][dbdc_if[i]]["subidx"] = i
|
||||
|
||||
for k, v in pairs(dev) do
|
||||
if k == "INDEX" or k == "EEPROM_offset" or k == "EEPROM_size"
|
||||
or k == "mainidx" then
|
||||
devs[ridx][dbdc_if[i]][k] = v
|
||||
else
|
||||
devs[ridx][dbdc_if[i]][k] = l1dat_parser.token_get(v, i, "")
|
||||
end
|
||||
end
|
||||
devname = dev.INDEX.."."..dev.mainidx.."."..devs[ridx][dbdc_if[i]]["subidx"]
|
||||
devs[dridx][devname] = devs[ridx][dbdc_if[i]]
|
||||
end
|
||||
|
||||
local apcli_if, wds_if, ext_if, mesh_if = {}, {}, {}, {}
|
||||
|
||||
for i = 1, band_num do
|
||||
ext_if[i] = l1dat_parser.token_get(dev.ext_ifname, i, nil)
|
||||
apcli_if[i] = l1dat_parser.token_get(dev.apcli_ifname, i, nil)
|
||||
wds_if[i] = l1dat_parser.token_get(dev.wds_ifname, i, nil)
|
||||
mesh_if[i] = l1dat_parser.token_get(dev.mesh_ifname, i, nil)
|
||||
end
|
||||
|
||||
for i = 1, l1dat_parser.MAX_NUM_EXTIF - 1 do -- ifname idx is from 0
|
||||
for j = 1, band_num do
|
||||
devs[ridx][ext_if[j]..i] = devs[ridx][dbdc_if[j]]
|
||||
end
|
||||
end
|
||||
|
||||
for i = 0, l1dat_parser.MAX_NUM_APCLI - 1 do
|
||||
for j = 1, band_num do
|
||||
devs[ridx][apcli_if[j]..i] = devs[ridx][dbdc_if[j]]
|
||||
end
|
||||
end
|
||||
|
||||
for i = 0, l1dat_parser.MAX_NUM_WDS - 1 do
|
||||
for j = 1, band_num do
|
||||
devs[ridx][wds_if[j]..i] = devs[ridx][dbdc_if[j]]
|
||||
end
|
||||
end
|
||||
|
||||
for i = 0, l1dat_parser.MAX_NUM_MESH - 1 do
|
||||
for j = 1, band_num do
|
||||
if mesh_if[j] then
|
||||
devs[ridx][mesh_if[j]..i] = devs[ridx][dbdc_if[j]]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
else
|
||||
devs[ridx][dev.main_ifname] = dev
|
||||
|
||||
devname = dev.INDEX.."."..dev.mainidx
|
||||
devs[dridx][devname] = dev
|
||||
|
||||
for i = 1, l1dat_parser.MAX_NUM_EXTIF - 1 do -- ifname idx is from 0
|
||||
devs[ridx][dev.ext_ifname..i] = dev
|
||||
end
|
||||
|
||||
for i = 0, l1dat_parser.MAX_NUM_APCLI - 1 do -- ifname idx is from 0
|
||||
devs[ridx][dev.apcli_ifname..i] = dev
|
||||
end
|
||||
|
||||
for i = 0, l1dat_parser.MAX_NUM_WDS - 1 do -- ifname idx is from 0
|
||||
devs[ridx][dev.wds_ifname..i] = dev
|
||||
end
|
||||
|
||||
for i = 0, l1dat_parser.MAX_NUM_MESH - 1 do -- ifname idx is from 0
|
||||
devs[ridx][dev.mesh_ifname..i] = dev
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
fd:close()
|
||||
return devs
|
||||
end
|
||||
|
||||
function l1dat_parser.creat_link_for_nvram( )
|
||||
local devs = l1dat_parser.load_l1_profile(l1dat_parser.L1_DAT_PATH)
|
||||
for devname, dev in pairs(devs.devname_ridx) do
|
||||
local dev = devs.devname_ridx[devname]
|
||||
profile = dev.profile_path
|
||||
os.execute("mkdir -p /tmp/mtk/wifi/")
|
||||
if dev.nvram_zone == "dev1" then
|
||||
os.execute("ln -sf " ..profile.." /tmp/mtk/wifi/2860")
|
||||
elseif dev.nvram_zone == "dev2" then
|
||||
os.execute("ln -sf " ..profile.." /tmp/mtk/wifi/rtdev")
|
||||
elseif dev.nvram_zone == "dev3" then
|
||||
os.execute("ln -sf " ..profile.." /tmp/mtk/wifi/wifi3")
|
||||
end
|
||||
end
|
||||
end
|
||||
return l1dat_parser
|
1764
package/mtk/applications/luci-app-mtk/root/usr/lib/lua/mtkwifi.lua
Normal file
1764
package/mtk/applications/luci-app-mtk/root/usr/lib/lua/mtkwifi.lua
Normal file
File diff suppressed because it is too large
Load Diff
130
package/mtk/applications/luci-app-mtk/root/usr/lib/lua/shuci.lua
Normal file
130
package/mtk/applications/luci-app-mtk/root/usr/lib/lua/shuci.lua
Normal file
@ -0,0 +1,130 @@
|
||||
#!/usr/bin/env lua
|
||||
|
||||
--[[
|
||||
* A pure lua library to translate between:
|
||||
* lua table <--> uci config
|
||||
*
|
||||
* For UCI: http://wiki.openwrt.org/doc/techref/uci
|
||||
* http://wiki.openwrt.org/doc/uci
|
||||
*
|
||||
* Copyright (C) 2015 Hua Shao <nossiac@163.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License version 2.1
|
||||
* as published by the Free Software Foundation
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
]]
|
||||
|
||||
|
||||
local shuci = {}
|
||||
|
||||
function shuci.decode(path)
|
||||
function file_exists(name)
|
||||
local f=io.open(name,"r")
|
||||
if f~=nil then io.close(f) return true else return false end
|
||||
end
|
||||
local function linebreaker(str)
|
||||
local i,_ = string.find(str, "([^%s])")
|
||||
if not i then return nil end
|
||||
if string.find(str, "config%s+%w+") then
|
||||
local i,j,k,v = string.find(str, "config%s+([%w-_]+)%s*['\"]*([^%s\'\"]*)")
|
||||
return "section", k, v
|
||||
elseif string.find(str, "option%s+%w+") then
|
||||
local i,j,k,v = string.find(str, "option%s+([%w-_]+)%s*['\"]([^'\"]+)['\"]")
|
||||
if not k or not v then
|
||||
i,j,k,v = string.find(str, "option%s+([%w-_]+)%s*['\"]*([^%s\'\"]*)")
|
||||
end
|
||||
return "option", k, v
|
||||
elseif string.find(str, "list%s+%w+") then
|
||||
local i,j,k,v = string.find(str, "list%s+([%w-_]+)%s*['\"]([^'\"]+)['\"]")
|
||||
if not k or not v then
|
||||
i,j,k,v = string.find(str, "list%s+([%w-_]+)%s*['\"]*([^%s\'\"]*)")
|
||||
end
|
||||
return "list", k, v
|
||||
end
|
||||
end
|
||||
|
||||
if not file_exists(path) then
|
||||
return
|
||||
end
|
||||
|
||||
local _sect_ = nil
|
||||
local t = {}
|
||||
for line in io.lines(path) do
|
||||
local _type, _name, _value = linebreaker(line)
|
||||
if _type == "section" then
|
||||
if not t[_name] then
|
||||
t[_name] = {}
|
||||
end
|
||||
t[_name][#t[_name]+1] = {}
|
||||
_sect_ = t[_name][#t[_name]]
|
||||
if _value then
|
||||
_sect_[".name"] = _value
|
||||
end
|
||||
end
|
||||
if _type == "option" then
|
||||
if _name and _value then
|
||||
_sect_[_name] = _value
|
||||
end
|
||||
end
|
||||
if _type == "list" and _name and _value then
|
||||
local idx
|
||||
if not _sect_[_name] then
|
||||
_sect_[_name] = {}
|
||||
_sect_[_name][1] = _value
|
||||
else
|
||||
idx = #_sect_[_name]
|
||||
_sect_[_name][idx+1] = _value
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return t
|
||||
end
|
||||
|
||||
|
||||
function shuci.encode(t, path)
|
||||
local dump = io.write
|
||||
if path then
|
||||
local fp = io.open(path, "w")
|
||||
dump = function(str) fp:write(str) end
|
||||
end
|
||||
for stype,ss in pairs(t) do
|
||||
if #ss > 0 then
|
||||
for _,s in ipairs(ss) do
|
||||
dump(string.format("config\t%s\t'%s'\n", stype, s[".name"] or ""))
|
||||
for k,v in pairs(s) do
|
||||
if type(v) == "table" then
|
||||
for _,vv in ipairs(v) do
|
||||
dump(string.format("\tlist\t%s\t'%s'\n",k,vv))
|
||||
end
|
||||
elseif type(v) == "string" and k ~= ".name" then
|
||||
dump(string.format("\toption\t%s\t'%s'\n",k,v))
|
||||
elseif type(v) == "number" and k ~= ".name" then
|
||||
dump(string.format("\toption\t%s\t'%s'\n",k,tonumber(v)))
|
||||
end
|
||||
end
|
||||
dump("\n")
|
||||
end
|
||||
else
|
||||
dump(string.format("config\t%s\t'%s'\n", stype, ss[".name"] or ""))
|
||||
for k,v in pairs(ss) do
|
||||
if type(v) == "table" then
|
||||
for _,vv in ipairs(v) do
|
||||
dump(string.format("\tlist\t%s\t'%s'\n",k,vv))
|
||||
end
|
||||
elseif type(v) == "string" and k ~= ".name" then
|
||||
dump(string.format("\toption\t%s\t'%s'\n",k,v))
|
||||
elseif type(v) == "number" and k ~= ".name" then
|
||||
dump(string.format("\toption\t%s\t'%s'\n",k,tonumber(v)))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return shuci
|
24
package/mtk/applications/luci-app-mtk/src/Makefile
Normal file
24
package/mtk/applications/luci-app-mtk/src/Makefile
Normal file
@ -0,0 +1,24 @@
|
||||
OBJ_IOCTL = ioctl_helper.o rate_calc.o security.o
|
||||
CFLAGS += -I.
|
||||
CFLAGS += -I$(ROOTDIR)/user/luci/lua-5.1.5/src
|
||||
CFLAGS += -Wall -shared -fPIC
|
||||
LUCI_APP_MTK_TARGET = ioctl_helper
|
||||
|
||||
%.o: %.c $(DEPS)
|
||||
$(CC) -c -o $@ $< $(CFLAGS)
|
||||
|
||||
all: $(LUCI_APP_MTK_TARGET)
|
||||
|
||||
ioctl_helper: $(OBJ_IOCTL)
|
||||
$(CC) -o $@.so $^ $(CFLAGS)
|
||||
|
||||
compile: $(LUCI_APP_MTK_TARGET)
|
||||
|
||||
install: compile
|
||||
mkdir -p $(DESTDIR)/usr/lib/lua
|
||||
cp -pR ioctl_helper.so $(DESTDIR)/usr/lib/lua/
|
||||
|
||||
clean:
|
||||
rm -f *.o *.so
|
||||
|
||||
romfs:
|
629
package/mtk/applications/luci-app-mtk/src/ioctl_helper.c
Normal file
629
package/mtk/applications/luci-app-mtk/src/ioctl_helper.c
Normal file
@ -0,0 +1,629 @@
|
||||
#include <arpa/inet.h>
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/types.h>
|
||||
#include <unistd.h>
|
||||
#include <linux/wireless.h>
|
||||
|
||||
#include "mtwifi.h"
|
||||
|
||||
int luaopen_ioctl_helper(lua_State *L)
|
||||
{
|
||||
lua_register(L,"c_get_macaddr",get_macaddr);
|
||||
lua_register(L,"c_convert_string_display",convert_string_display);
|
||||
lua_register(L,"c_StaInfo",StaInfo);
|
||||
lua_register(L,"c_getWMode",getWMOde);
|
||||
lua_register(L,"c_getTempature",getTempature);
|
||||
lua_register(L,"c_scanResult",scanResult);
|
||||
lua_register(L,"c_getTxPower",getTxPower);
|
||||
lua_register(L,"c_getChannel",getChannel);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int scanResult(lua_State *L)
|
||||
{
|
||||
int socket_id;
|
||||
const char *interface = luaL_checkstring(L, 1);
|
||||
const char *tmp_idx = luaL_checkstring(L, 2);
|
||||
struct iwreq wrq;
|
||||
char *data = NULL;
|
||||
unsigned int data_len = 5000;
|
||||
|
||||
if((data = (char *)malloc(data_len)) == NULL){
|
||||
fprintf(stderr, "%s: malloc failed\n", __func__);
|
||||
return -1;
|
||||
}
|
||||
memset(data, 0, data_len);
|
||||
socket_id = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
if (socket_id < 0) {
|
||||
perror("socket() failed");
|
||||
free(data);
|
||||
return socket_id;
|
||||
}
|
||||
|
||||
snprintf(wrq.ifr_name, sizeof(wrq.ifr_name), "%s", interface);
|
||||
snprintf(data, data_len, "%s", tmp_idx);
|
||||
wrq.u.data.length = data_len;
|
||||
wrq.u.data.pointer = data;
|
||||
wrq.u.data.flags = 0;
|
||||
if (ioctl(socket_id, RTPRIV_IOCTL_GSITESURVEY, &wrq) < 0) {
|
||||
fprintf(stderr, "ioctl -> RTPRIV_IOCTL_GSITESURVEY Fail !");
|
||||
close(socket_id);
|
||||
free(data);
|
||||
return -1;
|
||||
}
|
||||
lua_newtable(L);
|
||||
lua_pushstring(L, "scanresult"); /* push key */
|
||||
lua_pushstring(L, data); /* push value */
|
||||
lua_settable(L, -3);
|
||||
close(socket_id);
|
||||
free(data);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static unsigned int get_temp(const char *interface)
|
||||
{
|
||||
int socket_id;
|
||||
struct iwreq wrq;
|
||||
unsigned int tempature = 0;
|
||||
socket_id = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
if (socket_id < 0) {
|
||||
perror("socket() failed");
|
||||
return socket_id;
|
||||
}
|
||||
|
||||
snprintf(wrq.ifr_name, sizeof(wrq.ifr_name), "%s", interface);
|
||||
wrq.u.data.length = sizeof(tempature);
|
||||
wrq.u.data.pointer = &tempature;
|
||||
wrq.u.data.flags = OID_GET_CPU_TEMPERATURE;
|
||||
if( ioctl(socket_id, RT_PRIV_IOCTL, &wrq) == -1)
|
||||
fprintf(stderr, "%s: ioctl fail\n", __func__);
|
||||
close(socket_id);
|
||||
|
||||
return tempature;
|
||||
}
|
||||
|
||||
int getTempature(lua_State *L)
|
||||
{
|
||||
char tempstr[5] = {0};
|
||||
const char *interface = luaL_checkstring(L, 1);
|
||||
snprintf(tempstr, sizeof(tempstr), "%d", get_temp(interface));
|
||||
lua_newtable(L);
|
||||
lua_pushstring(L, "tempature"); /* push key */
|
||||
lua_pushstring(L, tempstr); /* push value */
|
||||
lua_settable(L, -3);
|
||||
/* Returning one table which is already on top of Lua stack. */
|
||||
return 1;
|
||||
}
|
||||
|
||||
static unsigned int get_txpower(const char *interface)
|
||||
{
|
||||
int socket_id;
|
||||
struct iwreq wrq;
|
||||
int txpower = 0;
|
||||
socket_id = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
if (socket_id < 0) {
|
||||
perror("socket() failed");
|
||||
return socket_id;
|
||||
}
|
||||
|
||||
snprintf(wrq.ifr_name, sizeof(wrq.ifr_name), "%s", interface);
|
||||
wrq.u.txpower.flags = 0;
|
||||
|
||||
if(ioctl(socket_id, SIOCGIWTXPOW, &wrq) >= 0) {
|
||||
txpower = wrq.u.txpower.value;
|
||||
} else {
|
||||
fprintf(stderr, "%s: ioctl fail\n", __func__);
|
||||
}
|
||||
|
||||
close(socket_id);
|
||||
|
||||
return txpower;
|
||||
}
|
||||
|
||||
int getTxPower(lua_State *L)
|
||||
{
|
||||
char tempstr[5] = {0};
|
||||
const char *interface = luaL_checkstring(L, 1);
|
||||
snprintf(tempstr, sizeof(tempstr), "%d", get_txpower(interface));
|
||||
lua_newtable(L);
|
||||
lua_pushstring(L, "txpower"); /* push key */
|
||||
lua_pushstring(L, tempstr); /* push value */
|
||||
lua_settable(L, -3);
|
||||
/* Returning one table which is already on top of Lua stack. */
|
||||
return 1;
|
||||
}
|
||||
|
||||
static unsigned int get_w_mode(const char *interface)
|
||||
{
|
||||
int socket_id;
|
||||
struct iwreq wrq;
|
||||
unsigned char data = 0;
|
||||
socket_id = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
if (socket_id < 0) {
|
||||
perror("socket() failed");
|
||||
return socket_id;
|
||||
}
|
||||
|
||||
snprintf(wrq.ifr_name, sizeof(wrq.ifr_name), "%s", interface);
|
||||
wrq.u.data.length = sizeof(data);
|
||||
wrq.u.data.pointer = &data;
|
||||
wrq.u.data.flags = OID_GET_WMODE;
|
||||
if( ioctl(socket_id, RT_PRIV_IOCTL, &wrq) == -1)
|
||||
fprintf(stderr, "%s: ioctl fail\n", __func__);
|
||||
close(socket_id);
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
int get_macaddr(lua_State *L)
|
||||
{
|
||||
const char *ifname = luaL_checkstring(L, 1);
|
||||
struct ifreq ifr;
|
||||
char *ptr;
|
||||
int skfd;
|
||||
static char if_hw[18] = {0};
|
||||
|
||||
if((skfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
|
||||
//printf(stderr, "%s: open socket error\n", __func__);
|
||||
return skfd;
|
||||
}
|
||||
snprintf(ifr.ifr_name, IF_NAMESIZE, "%s", ifname);
|
||||
if(ioctl(skfd, SIOCGIFHWADDR, &ifr) < 0) {
|
||||
close(skfd);
|
||||
fprintf(stderr, "%s: ioctl fail\n", __func__);
|
||||
return -1;
|
||||
}
|
||||
|
||||
ptr = (char *)&ifr.ifr_addr.sa_data;
|
||||
sprintf(if_hw, "%02X:%02X:%02X:%02X:%02X:%02X",
|
||||
(ptr[0] & 0377), (ptr[1] & 0377), (ptr[2] & 0377),
|
||||
(ptr[3] & 0377), (ptr[4] & 0377), (ptr[5] & 0377));
|
||||
close(skfd);
|
||||
|
||||
lua_newtable(L);
|
||||
lua_pushstring(L, "macaddr"); /* push key */
|
||||
lua_pushstring(L, if_hw); /* push value */
|
||||
lua_settable(L, -3);
|
||||
/* Returning one table which is already on top of Lua stack. */
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int get_channel(const char *interface)
|
||||
{
|
||||
int socket_id;
|
||||
struct iwreq wrq;
|
||||
int channel = -1;
|
||||
socket_id = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
if (socket_id < 0) {
|
||||
perror("socket() failed");
|
||||
return socket_id;
|
||||
}
|
||||
|
||||
snprintf(wrq.ifr_name, sizeof(wrq.ifr_name), "%s", interface);
|
||||
|
||||
if(ioctl(socket_id, SIOCGIWFREQ, &wrq) >= 0) {
|
||||
channel = wrq.u.freq.m;
|
||||
} else {
|
||||
fprintf(stderr, "%s: ioctl fail\n", __func__);
|
||||
}
|
||||
|
||||
close(socket_id);
|
||||
|
||||
return channel;
|
||||
}
|
||||
|
||||
int getChannel(lua_State *L)
|
||||
{
|
||||
char tempstr[5] = {0};
|
||||
const char *interface = luaL_checkstring(L, 1);
|
||||
|
||||
snprintf(tempstr, sizeof(tempstr), "%d", get_channel(interface));
|
||||
lua_newtable(L);
|
||||
lua_pushstring(L, "channel"); /* push key */
|
||||
lua_pushstring(L, tempstr); /* push value */
|
||||
lua_settable(L, -3);
|
||||
/* Returning one table which is already on top of Lua stack. */
|
||||
return 1;
|
||||
}
|
||||
|
||||
int getWMOde(lua_State *L)
|
||||
{
|
||||
char w_mode[5];
|
||||
const char *interface = luaL_checkstring(L, 1);
|
||||
snprintf(w_mode, sizeof(w_mode), "%d", get_w_mode(interface));
|
||||
lua_newtable(L);
|
||||
lua_pushstring(L, "getwmode"); /* push key */
|
||||
lua_pushstring(L, w_mode); /* push value */
|
||||
lua_settable(L, -3);
|
||||
/* Returning one table which is already on top of Lua stack. */
|
||||
return 1;
|
||||
}
|
||||
|
||||
int convert_string_display(lua_State *L)
|
||||
{
|
||||
#define BUF_SIZE 256
|
||||
int len, i;
|
||||
char buffer[BUF_SIZE]; // 33(characters in SSID) * 6(maximum length of a HTML entity) = 198 + 1(null character) = 199
|
||||
char *pOut,*pBufLimit;
|
||||
const char *str = luaL_checkstring(L, 1);
|
||||
|
||||
memset(buffer,0,BUF_SIZE);
|
||||
len = strlen(str);
|
||||
pOut = &buffer[0];
|
||||
pBufLimit = &buffer[BUF_SIZE - 1];
|
||||
for (i = 0; i < len && (pBufLimit - pOut) >=7; i++) { // 6(maximum length of a HTML entity) + 1(null character) = 7
|
||||
switch (str[i]) {
|
||||
case 38:
|
||||
sprintf(pOut, "&"); // '&'
|
||||
pOut += 5;
|
||||
break;
|
||||
|
||||
case 60:
|
||||
sprintf(pOut, "<"); // '<'
|
||||
pOut += 4;
|
||||
break;
|
||||
|
||||
case 62:
|
||||
sprintf(pOut, ">"); // '>'
|
||||
pOut += 4;
|
||||
break;
|
||||
|
||||
case 34:
|
||||
sprintf(pOut, """); // '"'
|
||||
pOut += 5;
|
||||
break;
|
||||
|
||||
case 39:
|
||||
sprintf(pOut, "'"); // '''
|
||||
pOut += 5;
|
||||
break;
|
||||
case 32:
|
||||
sprintf(pOut, " "); // ' '
|
||||
pOut += 6;
|
||||
break;
|
||||
|
||||
default:
|
||||
if ((str[i]>=0) && (str[i]<=31)) {
|
||||
//Device Control Characters
|
||||
sprintf(pOut, "&#%02d;", str[i]);
|
||||
pOut += 5;
|
||||
} else if ((str[i]==39) || (str[i]==47) || (str[i]==59) || (str[i]==92)) {
|
||||
// ' / ; (backslash)
|
||||
sprintf(pOut, "&#%02d;", str[i]);
|
||||
pOut += 5;
|
||||
} else if (str[i]>=127) {
|
||||
//Device Control Characters
|
||||
sprintf(pOut, "&#%03d;", str[i]);
|
||||
pOut += 6;
|
||||
} else {
|
||||
*pOut = str[i];
|
||||
pOut++;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
*pOut = '\0';
|
||||
lua_newtable(L);
|
||||
lua_pushstring(L, "output"); /* push key */
|
||||
lua_pushstring(L, buffer); /* push value */
|
||||
lua_settable(L, -3);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int StaInfo(lua_State *L)
|
||||
{
|
||||
int i, s;
|
||||
struct iwreq iwr;
|
||||
RT_802_11_MAC_TABLE_FIX *table;
|
||||
char tmpBuff[128] = {0};
|
||||
char *phyMode[12] = {"CCK", "OFDM", "MM", "GF", "VHT", "HE",
|
||||
"HE5G", "HE2G", "HE_SU", "HE_EXT_SU", "HE_TRIG", "HE_MU"};
|
||||
const char *interface = luaL_checkstring(L, 1);
|
||||
|
||||
table = (RT_802_11_MAC_TABLE_FIX *)malloc(sizeof(RT_802_11_MAC_TABLE_FIX));
|
||||
if (!table)
|
||||
return -ENOMEM;
|
||||
|
||||
memset(table, 0, sizeof(RT_802_11_MAC_TABLE_FIX));
|
||||
|
||||
s = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
|
||||
snprintf(iwr.ifr_name, IFNAMSIZ, "%s", interface);
|
||||
|
||||
iwr.u.data.pointer = table;
|
||||
|
||||
if (s < 0) {
|
||||
free(table);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (ioctl(s, RTPRIV_IOCTL_GET_MAC_TABLE_STRUCT, &iwr) < 0) {
|
||||
free(table);
|
||||
close(s);
|
||||
return 0;
|
||||
}
|
||||
|
||||
close(s);
|
||||
|
||||
/* Creates parent table of size table.Num array elements: */
|
||||
lua_createtable(L, table->Num, 0);
|
||||
|
||||
for (i = 0; i < table->Num; i++) {
|
||||
|
||||
lua_pushnumber(L, i);
|
||||
|
||||
RT_802_11_MAC_ENTRY_FIX *pe = &(table->Entry[i]);
|
||||
|
||||
HTTRANSMIT_SETTING_FIX RxRate;
|
||||
HTTRANSMIT_SETTING_FIX TxRate;
|
||||
RxRate.word = pe->LastRxRate.word;
|
||||
TxRate.word = pe->TxRate.word;
|
||||
|
||||
unsigned int mcs = TxRate.field.MCS;
|
||||
unsigned int nss = 0;
|
||||
unsigned long DataRate = 0;
|
||||
|
||||
unsigned int mcs_r = RxRate.field.MCS;
|
||||
unsigned int nss_r = 0;
|
||||
unsigned long DataRate_r = 0;
|
||||
|
||||
int hr, min, sec;
|
||||
|
||||
hr = pe->ConnectedTime/3600;
|
||||
min = (pe->ConnectedTime % 3600)/60;
|
||||
sec = pe->ConnectedTime - hr*3600 - min*60;
|
||||
|
||||
/* Creates first child table of size 34 non-array elements: */
|
||||
lua_createtable(L, 0, 34);
|
||||
|
||||
// MAC Address
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%02X:%02X:%02X:%02X:%02X:%02X", pe->Addr[0], pe->Addr[1], pe->Addr[2], pe->Addr[3],
|
||||
pe->Addr[4], pe->Addr[5]);
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "MacAddr");
|
||||
|
||||
// AID, Power Save mode, MIMO Power Save
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%d", pe->Aid);
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "Aid");
|
||||
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%d", pe->Psm);
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "Psm");
|
||||
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%d", pe->MimoPs);
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "MimoPs");
|
||||
|
||||
// TX Rate NSS-MCS
|
||||
if (TxRate.field.MODE >= MODE_VHT) {
|
||||
nss = ((mcs & (0x3 << 4)) >> 4) + 1;
|
||||
mcs = mcs & 0xF;
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%dSS-MCS%d", nss, mcs);
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "Mcs");
|
||||
} else {
|
||||
mcs = mcs & 0x3f;
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "MCS%d", mcs);
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "Mcs");
|
||||
}
|
||||
|
||||
// TX BW
|
||||
if (TxRate.field.BW == BW_20) {
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%d", 20);
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "Bw");
|
||||
} else if (TxRate.field.BW == BW_40) {
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%d", 40);
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "Bw");
|
||||
} else if (TxRate.field.BW == BW_80) {
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%d", 80);
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "Bw");
|
||||
} else if (TxRate.field.BW == BW_160) {
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%d", 160);
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "Bw");
|
||||
}
|
||||
|
||||
//TX SGI
|
||||
if (TxRate.field.MODE < MODE_HTMIX) {
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%s", "LGI");
|
||||
} else if (TxRate.field.MODE >= MODE_HE) {
|
||||
if (TxRate.field.ShortGI == 0)
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%s", "SGI");
|
||||
else if (TxRate.field.ShortGI == 1)
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%s", "MGI");
|
||||
else if (TxRate.field.ShortGI == 2)
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%s", "LGI");
|
||||
} else {
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%s", TxRate.field.ShortGI ? "SGI" : "LGI");
|
||||
}
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "Gi");
|
||||
|
||||
//TX phy mode
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%s", phyMode[TxRate.field.MODE]);
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "PhyMode");
|
||||
|
||||
//TX STBC
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%s", TxRate.field.STBC? "STBC": " ");
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "Stbc");
|
||||
|
||||
// TxBF configuration
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%c", TxRate.field.iTxBF ? 'I': '-');
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "iTxBF");
|
||||
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%c", TxRate.field.eTxBF ? 'E': '-');
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "eTxBF");
|
||||
|
||||
// RSSI
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%d", (int)(pe->AvgRssi0));
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "AvgRssi0");
|
||||
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%d", (int)(pe->AvgRssi1));
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "AvgRssi1");
|
||||
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%d", (int)(pe->AvgRssi2));
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "AvgRssi2");
|
||||
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%d", (int)(pe->AvgRssi3));
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "AvgRssi3");
|
||||
|
||||
// Per Stream SNR
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%0.1f", pe->StreamSnr[0]*0.25);
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "StreamSnr0");
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%0.1f", pe->StreamSnr[1]*0.25); //mcs>7? pe->StreamSnr[1]*0.25: 0.0);
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "StreamSnr1");
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%0.1f", pe->StreamSnr[2]*0.25); //mcs>15? pe->StreamSnr[2]*0.25: 0.0);
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "StreamSnr2");
|
||||
|
||||
// Sounding Response SNR
|
||||
if (TxRate.field.eTxBF) {
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%0.1f", pe->SoundingRespSnr[0]*0.25);
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "SoundingRespSnr0");
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%0.1f", pe->SoundingRespSnr[1]*0.25);
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "SoundingRespSnr1");
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%0.1f", pe->SoundingRespSnr[2]*0.25);
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "SoundingRespSnr2");
|
||||
}
|
||||
|
||||
// Last RX NSS-MCS
|
||||
if (RxRate.field.MODE >= MODE_VHT) {
|
||||
nss_r = (((mcs_r & (0x3 << 4)) >> 4) + 1) / (RxRate.field.STBC + 1);
|
||||
mcs_r = mcs_r & 0xF;
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%dSS-MCS%d", nss_r, mcs_r);
|
||||
} else if (RxRate.field.MODE >= MODE_HTMIX) {
|
||||
mcs_r = mcs_r & 0x3f;
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "MCS%d", mcs_r);
|
||||
} else if (RxRate.field.MODE == MODE_OFDM) {
|
||||
mcs_r = mcs_r & 0xf;
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "MCS%d", mcs_r);
|
||||
RxRate.field.MCS = mcs_r;
|
||||
} else if (RxRate.field.MODE == MODE_CCK) {
|
||||
mcs_r = cck_to_mcs(mcs_r & 0x7);
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "MCS%d", mcs_r);
|
||||
RxRate.field.MCS = mcs_r;
|
||||
}
|
||||
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "LastMcs");
|
||||
|
||||
if (RxRate.field.BW == BW_20) {
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%d", 20);
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "LastBw");
|
||||
} else if (RxRate.field.BW == BW_40) {
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%d", 40);
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "LastBw");
|
||||
} else if (RxRate.field.BW == BW_80) {
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%d", 80);
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "LastBw");
|
||||
} else if (RxRate.field.BW == BW_160) {
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%d", 160);
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "LastBw");
|
||||
}
|
||||
|
||||
if (RxRate.field.MODE < MODE_HTMIX) {
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%s", "LGI");
|
||||
} else if (RxRate.field.MODE >= MODE_HE) {
|
||||
if (RxRate.field.ShortGI == 0)
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%s", "SGI");
|
||||
else if (RxRate.field.ShortGI == 1)
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%s", "MGI");
|
||||
else if (RxRate.field.ShortGI == 2)
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%s", "LGI");
|
||||
} else {
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%s", RxRate.field.ShortGI ? "SGI" : "LGI");
|
||||
}
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "LastGi");
|
||||
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%s", phyMode[RxRate.field.MODE]);
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "LastPhyMode");
|
||||
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%s", RxRate.field.STBC ? "STBC": " ");
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "LastStbc");
|
||||
|
||||
// Connect time
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%02d", hr);
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "Hr");
|
||||
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%02d", min);
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "Min");
|
||||
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%02d", sec);
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "Sec");
|
||||
|
||||
if (TxRate.field.MODE >= MODE_HE) {
|
||||
get_rate_he((mcs & 0xf), TxRate.field.BW, nss, 0, &DataRate);
|
||||
if (TxRate.field.ShortGI == 1)
|
||||
DataRate = (DataRate * 967) >> 10;
|
||||
else if (TxRate.field.ShortGI == 2)
|
||||
DataRate = (DataRate * 870) >> 10;
|
||||
} else {
|
||||
getRate(TxRate, &DataRate);
|
||||
}
|
||||
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%ld", DataRate);
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "TxRate");
|
||||
|
||||
if (RxRate.field.MODE >= MODE_HE) {
|
||||
get_rate_he((mcs_r & 0xf), RxRate.field.BW, nss_r, 0, &DataRate_r);
|
||||
if (RxRate.field.ShortGI == 1)
|
||||
DataRate_r = (DataRate_r * 967) >> 10;
|
||||
else if (RxRate.field.ShortGI == 2)
|
||||
DataRate_r = (DataRate_r * 870) >> 10;
|
||||
} else {
|
||||
getRate(RxRate, &DataRate_r);
|
||||
}
|
||||
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%ld", DataRate_r);
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "RxRate");
|
||||
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%s", GetEncryModeStr(pe->EncryMode));
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "EncryptMode");
|
||||
|
||||
snprintf(tmpBuff, sizeof(tmpBuff), "%s", GetAuthModeStr(pe->AuthMode));
|
||||
lua_pushstring(L, tmpBuff);
|
||||
lua_setfield(L, -2, "AuthMode");
|
||||
|
||||
lua_settable(L, -3);
|
||||
}
|
||||
free(table);
|
||||
return 1;
|
||||
}
|
221
package/mtk/applications/luci-app-mtk/src/mtwifi.h
Normal file
221
package/mtk/applications/luci-app-mtk/src/mtwifi.h
Normal file
@ -0,0 +1,221 @@
|
||||
#ifndef __MTWIFI_H
|
||||
#define __MTWIFI_H
|
||||
|
||||
#define USHORT unsigned short
|
||||
#define UCHAR unsigned char
|
||||
#define ULONG unsigned long
|
||||
#define UINT8 unsigned char
|
||||
#define UINT16 unsigned short
|
||||
#define UINT32 unsigned int
|
||||
#define INT32 int
|
||||
#define INT int
|
||||
|
||||
#include <lua.h> /* Always include this */
|
||||
#include <lauxlib.h> /* Always include this */
|
||||
#include <lualib.h> /* Always include this */
|
||||
|
||||
typedef union _HTTRANSMIT_SETTING_FIX {
|
||||
struct {
|
||||
USHORT MCS:6;
|
||||
USHORT ldpc:1;
|
||||
USHORT BW:2;
|
||||
USHORT ShortGI:2;
|
||||
USHORT STBC:1;
|
||||
USHORT eTxBF:1;
|
||||
USHORT iTxBF:1;
|
||||
USHORT MODE:4;
|
||||
} field;
|
||||
UINT32 word;
|
||||
} HTTRANSMIT_SETTING_FIX, *PHTTRANSMIT_SETTING_FIX;
|
||||
|
||||
typedef struct _RT_802_11_MAC_ENTRY_FIX {
|
||||
unsigned char ApIdx;
|
||||
unsigned char Addr[6];
|
||||
unsigned short Aid;
|
||||
unsigned char Psm; // 0:PWR_ACTIVE, 1:PWR_SAVE
|
||||
unsigned char MimoPs; // 0:MMPS_STATIC, 1:MMPS_DYNAMIC, 3:MMPS_Enabled
|
||||
signed char AvgRssi0;
|
||||
signed char AvgRssi1;
|
||||
signed char AvgRssi2;
|
||||
signed char AvgRssi3;
|
||||
unsigned int ConnectedTime;
|
||||
HTTRANSMIT_SETTING_FIX TxRate;
|
||||
HTTRANSMIT_SETTING_FIX LastRxRate;
|
||||
short StreamSnr[3];
|
||||
short SoundingRespSnr[3];
|
||||
UINT32 EncryMode;
|
||||
UINT32 AuthMode;
|
||||
} RT_802_11_MAC_ENTRY_FIX;
|
||||
|
||||
#define MAX_NUMBER_OF_MAC 544
|
||||
|
||||
typedef struct _RT_802_11_MAC_TABLE {
|
||||
unsigned long Num;
|
||||
RT_802_11_MAC_ENTRY_FIX Entry[MAX_NUMBER_OF_MAC];
|
||||
} RT_802_11_MAC_TABLE_FIX;
|
||||
|
||||
#define IF_NAMESIZE 16
|
||||
#define SIOCIWFIRSTPRIV 0x8BE0
|
||||
#define RT_PRIV_IOCTL (SIOCIWFIRSTPRIV + 0x0E)
|
||||
#define RTPRIV_IOCTL_GET_MAC_TABLE_STRUCT (SIOCIWFIRSTPRIV + 0x1F)
|
||||
#define RTPRIV_IOCTL_GSITESURVEY (SIOCIWFIRSTPRIV + 0x0D)
|
||||
#define OID_GET_WMODE 0x099E
|
||||
#define OID_GET_CPU_TEMPERATURE 0x09A1
|
||||
|
||||
#define MODE_CCK 0
|
||||
#define MODE_OFDM 1
|
||||
#define MODE_HTMIX 2
|
||||
#define MODE_HTGREENFIELD 3
|
||||
#define MODE_VHT 4
|
||||
#define MODE_HE 5
|
||||
#define MODE_HE_5G 6
|
||||
#define MODE_HE_24G 7
|
||||
#define MODE_HE_SU 8
|
||||
#define MODE_HE_EXT_SU 9
|
||||
#define MODE_HE_TRIG 10
|
||||
#define MODE_HE_MU 11
|
||||
|
||||
#define TMI_TX_RATE_OFDM_6M 11
|
||||
#define TMI_TX_RATE_OFDM_9M 15
|
||||
#define TMI_TX_RATE_OFDM_12M 10
|
||||
#define TMI_TX_RATE_OFDM_18M 14
|
||||
#define TMI_TX_RATE_OFDM_24M 9
|
||||
#define TMI_TX_RATE_OFDM_36M 13
|
||||
#define TMI_TX_RATE_OFDM_48M 8
|
||||
#define TMI_TX_RATE_OFDM_54M 12
|
||||
|
||||
#define TMI_TX_RATE_CCK_1M_LP 0
|
||||
#define TMI_TX_RATE_CCK_2M_LP 1
|
||||
#define TMI_TX_RATE_CCK_5M_LP 2
|
||||
#define TMI_TX_RATE_CCK_11M_LP 3
|
||||
|
||||
#define TMI_TX_RATE_CCK_2M_SP 5
|
||||
#define TMI_TX_RATE_CCK_5M_SP 6
|
||||
#define TMI_TX_RATE_CCK_11M_SP 7
|
||||
|
||||
enum oid_bw {
|
||||
BAND_WIDTH_20,
|
||||
BAND_WIDTH_40,
|
||||
BAND_WIDTH_80,
|
||||
BAND_WIDTH_160,
|
||||
BAND_WIDTH_10,
|
||||
BAND_WIDTH_5,
|
||||
BAND_WIDTH_8080,
|
||||
BAND_WIDTH_BOTH,
|
||||
BAND_WIDTH_25,
|
||||
BAND_WIDTH_20_242TONE,
|
||||
BAND_WIDTH_NUM
|
||||
};
|
||||
|
||||
#define BW_20 BAND_WIDTH_20
|
||||
#define BW_40 BAND_WIDTH_40
|
||||
#define BW_80 BAND_WIDTH_80
|
||||
#define BW_160 BAND_WIDTH_160
|
||||
#define BW_10 BAND_WIDTH_10
|
||||
#define BW_5 BAND_WIDTH_5
|
||||
#define BW_8080 BAND_WIDTH_8080
|
||||
#define BW_25 BAND_WIDTH_25
|
||||
#define BW_20_242TONE BAND_WIDTH_20_242TONE
|
||||
#define BW_NUM BAND_WIDTH_NUM
|
||||
|
||||
typedef enum _SEC_CIPHER_MODE {
|
||||
SEC_CIPHER_NONE,
|
||||
SEC_CIPHER_WEP40,
|
||||
SEC_CIPHER_WEP104,
|
||||
SEC_CIPHER_WEP128,
|
||||
SEC_CIPHER_TKIP,
|
||||
SEC_CIPHER_CCMP128,
|
||||
SEC_CIPHER_CCMP256,
|
||||
SEC_CIPHER_GCMP128,
|
||||
SEC_CIPHER_GCMP256,
|
||||
SEC_CIPHER_BIP_CMAC128,
|
||||
SEC_CIPHER_BIP_CMAC256,
|
||||
SEC_CIPHER_BIP_GMAC128,
|
||||
SEC_CIPHER_BIP_GMAC256,
|
||||
SEC_CIPHER_WPI_SMS4, /* WPI SMS4 support */
|
||||
SEC_CIPHER_MAX /* Not a real mode, defined as upper bound */
|
||||
} SEC_CIPHER_MODE;
|
||||
|
||||
#define IS_CIPHER_NONE(_Cipher) (((_Cipher) & (1 << SEC_CIPHER_NONE)) > 0)
|
||||
#define IS_CIPHER_WEP40(_Cipher) (((_Cipher) & (1 << SEC_CIPHER_WEP40)) > 0)
|
||||
#define IS_CIPHER_WEP104(_Cipher) (((_Cipher) & (1 << SEC_CIPHER_WEP104)) > 0)
|
||||
#define IS_CIPHER_WEP128(_Cipher) (((_Cipher) & (1 << SEC_CIPHER_WEP128)) > 0)
|
||||
#define IS_CIPHER_WEP(_Cipher) (((_Cipher) & ((1 << SEC_CIPHER_WEP40) | (1 << SEC_CIPHER_WEP104) | (1 << SEC_CIPHER_WEP128))) > 0)
|
||||
#define IS_CIPHER_TKIP(_Cipher) (((_Cipher) & (1 << SEC_CIPHER_TKIP)) > 0)
|
||||
#define IS_CIPHER_WEP_TKIP_ONLY(_Cipher) ((IS_CIPHER_WEP(_Cipher) || IS_CIPHER_TKIP(_Cipher)) && (_Cipher < (1 << SEC_CIPHER_CCMP128)))
|
||||
#define IS_CIPHER_CCMP128(_Cipher) (((_Cipher) & (1 << SEC_CIPHER_CCMP128)) > 0)
|
||||
#define IS_CIPHER_CCMP256(_Cipher) (((_Cipher) & (1 << SEC_CIPHER_CCMP256)) > 0)
|
||||
#define IS_CIPHER_GCMP128(_Cipher) (((_Cipher) & (1 << SEC_CIPHER_GCMP128)) > 0)
|
||||
#define IS_CIPHER_GCMP256(_Cipher) (((_Cipher) & (1 << SEC_CIPHER_GCMP256)) > 0)
|
||||
#define IS_CIPHER_BIP_CMAC128(_Cipher) (((_Cipher) & (1 << SEC_CIPHER_BIP_CMAC128)) > 0)
|
||||
#define IS_CIPHER_BIP_CMAC256(_Cipher) (((_Cipher) & (1 << SEC_CIPHER_BIP_CMAC256)) > 0)
|
||||
#define IS_CIPHER_BIP_GMAC128(_Cipher) (((_Cipher) & (1 << SEC_CIPHER_BIP_GMAC128)) > 0)
|
||||
#define IS_CIPHER_BIP_GMAC256(_Cipher) (((_Cipher) & (1 << SEC_CIPHER_BIP_GMAC256)) > 0)
|
||||
|
||||
/* 802.11 authentication and key management */
|
||||
typedef enum _SEC_AKM_MODE {
|
||||
SEC_AKM_OPEN,
|
||||
SEC_AKM_SHARED,
|
||||
SEC_AKM_AUTOSWITCH,
|
||||
SEC_AKM_WPA1, /* Enterprise security over 802.1x */
|
||||
SEC_AKM_WPA1PSK,
|
||||
SEC_AKM_WPANone, /* For Win IBSS, directly PTK, no handshark */
|
||||
SEC_AKM_WPA2, /* Enterprise security over 802.1x */
|
||||
SEC_AKM_WPA2PSK,
|
||||
SEC_AKM_FT_WPA2,
|
||||
SEC_AKM_FT_WPA2PSK,
|
||||
SEC_AKM_WPA2_SHA256,
|
||||
SEC_AKM_WPA2PSK_SHA256,
|
||||
SEC_AKM_TDLS,
|
||||
SEC_AKM_SAE_SHA256,
|
||||
SEC_AKM_FT_SAE_SHA256,
|
||||
SEC_AKM_SUITEB_SHA256,
|
||||
SEC_AKM_SUITEB_SHA384,
|
||||
SEC_AKM_FT_WPA2_SHA384,
|
||||
SEC_AKM_WAICERT, /* WAI certificate authentication */
|
||||
SEC_AKM_WAIPSK, /* WAI pre-shared key */
|
||||
SEC_AKM_OWE,
|
||||
SEC_AKM_FILS_SHA256,
|
||||
SEC_AKM_FILS_SHA384,
|
||||
SEC_AKM_WPA3, /* WPA3(ent) = WPA2(ent) + PMF MFPR=1 => WPA3 code flow is same as WPA2, the usage of SEC_AKM_WPA3 is to force pmf on */
|
||||
SEC_AKM_MAX /* Not a real mode, defined as upper bound */
|
||||
} SEC_AKM_MODE;
|
||||
|
||||
#define IS_AKM_OPEN(_AKMMap) ((_AKMMap & (1 << SEC_AKM_OPEN)) > 0)
|
||||
#define IS_AKM_SHARED(_AKMMap) ((_AKMMap & (1 << SEC_AKM_SHARED)) > 0)
|
||||
#define IS_AKM_AUTOSWITCH(_AKMMap) ((_AKMMap & (1 << SEC_AKM_AUTOSWITCH)) > 0)
|
||||
#define IS_AKM_WPA1(_AKMMap) ((_AKMMap & (1 << SEC_AKM_WPA1)) > 0)
|
||||
#define IS_AKM_WPA1PSK(_AKMMap) ((_AKMMap & (1 << SEC_AKM_WPA1PSK)) > 0)
|
||||
#define IS_AKM_WPANONE(_AKMMap) ((_AKMMap & (1 << SEC_AKM_WPANone)) > 0)
|
||||
#define IS_AKM_WPA2(_AKMMap) ((_AKMMap & (1 << SEC_AKM_WPA2)) > 0)
|
||||
#define IS_AKM_WPA2PSK(_AKMMap) ((_AKMMap & (1 << SEC_AKM_WPA2PSK)) > 0)
|
||||
#define IS_AKM_FT_WPA2(_AKMMap) ((_AKMMap & (1 << SEC_AKM_FT_WPA2)) > 0)
|
||||
#define IS_AKM_FT_WPA2PSK(_AKMMap) ((_AKMMap & (1 << SEC_AKM_FT_WPA2PSK)) > 0)
|
||||
#define IS_AKM_WPA2_SHA256(_AKMMap) ((_AKMMap & (1 << SEC_AKM_WPA2_SHA256)) > 0)
|
||||
#define IS_AKM_WPA2PSK_SHA256(_AKMMap) ((_AKMMap & (1 << SEC_AKM_WPA2PSK_SHA256)) > 0)
|
||||
#define IS_AKM_TDLS(_AKMMap) ((_AKMMap & (1 << SEC_AKM_TDLS)) > 0)
|
||||
#define IS_AKM_SAE_SHA256(_AKMMap) ((_AKMMap & (1 << SEC_AKM_SAE_SHA256)) > 0)
|
||||
#define IS_AKM_FT_SAE_SHA256(_AKMMap) ((_AKMMap & (1 << SEC_AKM_FT_SAE_SHA256)) > 0)
|
||||
#define IS_AKM_SUITEB_SHA256(_AKMMap) ((_AKMMap & (1 << SEC_AKM_SUITEB_SHA256)) > 0)
|
||||
#define IS_AKM_SUITEB_SHA384(_AKMMap) ((_AKMMap & (1 << SEC_AKM_SUITEB_SHA384)) > 0)
|
||||
#define IS_AKM_FT_WPA2_SHA384(_AKMMap) ((_AKMMap & (1 << SEC_AKM_FT_WPA2_SHA384)) > 0)
|
||||
#define IS_AKM_WPA3(_AKMMap) ((_AKMMap & (1 << SEC_AKM_WPA3)) > 0)
|
||||
#define IS_AKM_WPA3PSK(_AKMMap) (IS_AKM_SAE_SHA256(_AKMMap))
|
||||
#define IS_AKM_WPA3_192BIT(_AKMMap) (IS_AKM_SUITEB_SHA384(_AKMMap))
|
||||
#define IS_AKM_OWE(_AKMMap) ((_AKMMap & (1 << SEC_AKM_OWE)) > 0)
|
||||
|
||||
int get_macaddr(lua_State *L);
|
||||
int convert_string_display(lua_State *L);
|
||||
int StaInfo(lua_State *L);
|
||||
int getWMOde(lua_State *L);
|
||||
int getTxPower(lua_State *L);
|
||||
int getTempature(lua_State *L);
|
||||
int getChannel(lua_State *L);
|
||||
int scanResult(lua_State *L);
|
||||
void getRate(HTTRANSMIT_SETTING_FIX HTSetting, ULONG *fLastTxRxRate);
|
||||
void get_rate_he(UINT8 mcs, UINT8 bw, UINT8 nss, UINT8 dcm, ULONG *last_tx_rate);
|
||||
UINT32 cck_to_mcs(UINT32 mcs);
|
||||
const char *GetEncryModeStr(UINT32 encryMode);
|
||||
const char *GetAuthModeStr(UINT32 authMode);
|
||||
|
||||
#endif
|
479
package/mtk/applications/luci-app-mtk/src/rate_calc.c
Normal file
479
package/mtk/applications/luci-app-mtk/src/rate_calc.c
Normal file
@ -0,0 +1,479 @@
|
||||
#include "mtwifi.h"
|
||||
|
||||
#define MAX_NUM_HE_BANDWIDTHS 4
|
||||
#define MAX_NUM_HE_SPATIAL_STREAMS 4
|
||||
#define MAX_NUM_HE_MCS_ENTRIES 12
|
||||
|
||||
UINT32 cck_to_mcs(UINT32 mcs) {
|
||||
UINT32 ret = 0;
|
||||
if (mcs == TMI_TX_RATE_CCK_1M_LP)
|
||||
ret = 0;
|
||||
else if (mcs == TMI_TX_RATE_CCK_2M_LP)
|
||||
ret = 1;
|
||||
else if (mcs == TMI_TX_RATE_CCK_5M_LP)
|
||||
ret = 2;
|
||||
else if (mcs == TMI_TX_RATE_CCK_11M_LP)
|
||||
ret = 3;
|
||||
else if (mcs == TMI_TX_RATE_CCK_2M_SP)
|
||||
ret = 1;
|
||||
else if (mcs == TMI_TX_RATE_CCK_5M_SP)
|
||||
ret = 2;
|
||||
else if (mcs == TMI_TX_RATE_CCK_11M_SP)
|
||||
ret = 3;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static UINT16 he_mcs_phyrate_mapping_table[MAX_NUM_HE_BANDWIDTHS][MAX_NUM_HE_SPATIAL_STREAMS][MAX_NUM_HE_MCS_ENTRIES] = {
|
||||
{ /*20 Mhz*/
|
||||
/* 1 SS */
|
||||
{
|
||||
/* DCM 0*/
|
||||
8,
|
||||
17,
|
||||
25,
|
||||
34,
|
||||
51,
|
||||
68,
|
||||
77,
|
||||
86,
|
||||
103,
|
||||
114,
|
||||
129,
|
||||
143
|
||||
},
|
||||
/* 2 SS */
|
||||
{
|
||||
/* DCM 0 */
|
||||
17,
|
||||
34,
|
||||
51,
|
||||
68,
|
||||
103,
|
||||
137,
|
||||
154,
|
||||
172,
|
||||
206,
|
||||
229,
|
||||
258,
|
||||
286
|
||||
},
|
||||
/* 3 SS */
|
||||
{
|
||||
/* DCM 0 */
|
||||
25,
|
||||
51,
|
||||
77,
|
||||
103,
|
||||
154,
|
||||
206,
|
||||
232,
|
||||
258,
|
||||
309,
|
||||
344,
|
||||
387,
|
||||
430
|
||||
},
|
||||
/* 4 SS */
|
||||
{
|
||||
/* DCM 0 */
|
||||
34,
|
||||
68,
|
||||
103,
|
||||
137,
|
||||
206,
|
||||
275,
|
||||
309,
|
||||
344,
|
||||
412,
|
||||
458,
|
||||
516,
|
||||
573
|
||||
}
|
||||
},
|
||||
{ /*40 Mhz*/
|
||||
/* 1 SS */
|
||||
{
|
||||
/* DCM 0*/
|
||||
17,
|
||||
34,
|
||||
51,
|
||||
68,
|
||||
103,
|
||||
137,
|
||||
154,
|
||||
172,
|
||||
206,
|
||||
229,
|
||||
258,
|
||||
286
|
||||
},
|
||||
/* 2 SS */
|
||||
{
|
||||
/* DCM 0 */
|
||||
34,
|
||||
68,
|
||||
103,
|
||||
137,
|
||||
206,
|
||||
275,
|
||||
309,
|
||||
344,
|
||||
412,
|
||||
458,
|
||||
516,
|
||||
573
|
||||
|
||||
},
|
||||
/* 3 SS */
|
||||
{
|
||||
/* DCM 0 */
|
||||
51,
|
||||
103,
|
||||
154,
|
||||
206,
|
||||
309,
|
||||
412,
|
||||
464,
|
||||
516,
|
||||
619,
|
||||
688,
|
||||
774,
|
||||
860
|
||||
|
||||
},
|
||||
/* 4 SS */
|
||||
{
|
||||
/* DCM 0 */
|
||||
68,
|
||||
137,
|
||||
206,
|
||||
275,
|
||||
412,
|
||||
550,
|
||||
619,
|
||||
688,
|
||||
825,
|
||||
917,
|
||||
1032,
|
||||
1147
|
||||
}
|
||||
},
|
||||
{ /*80 Mhz*/
|
||||
/* 1 SS */
|
||||
{
|
||||
/* DCM 0*/
|
||||
36,
|
||||
72,
|
||||
108,
|
||||
144,
|
||||
216,
|
||||
288,
|
||||
324,
|
||||
360,
|
||||
432,
|
||||
480,
|
||||
540,
|
||||
600
|
||||
},
|
||||
/* 2 SS */
|
||||
{
|
||||
/* DCM 0 */
|
||||
72,
|
||||
144,
|
||||
216,
|
||||
288,
|
||||
432,
|
||||
576,
|
||||
648,
|
||||
720,
|
||||
864,
|
||||
960,
|
||||
1080,
|
||||
1201
|
||||
},
|
||||
/* 3 SS */
|
||||
{
|
||||
/* DCM 0 */
|
||||
108,
|
||||
216,
|
||||
324,
|
||||
432,
|
||||
648,
|
||||
864,
|
||||
972,
|
||||
1080,
|
||||
1297,
|
||||
1441,
|
||||
1621,
|
||||
1801
|
||||
},
|
||||
/* 4 SS */
|
||||
{
|
||||
/* DCM 0 */
|
||||
144,
|
||||
288,
|
||||
432,
|
||||
576,
|
||||
864,
|
||||
1152,
|
||||
1297,
|
||||
1141,
|
||||
1729,
|
||||
1921,
|
||||
2161,
|
||||
2401
|
||||
}
|
||||
},
|
||||
{ /*160 Mhz*/
|
||||
/* 1 SS */
|
||||
{
|
||||
/* DCM 0*/
|
||||
72,
|
||||
144,
|
||||
216,
|
||||
288,
|
||||
432,
|
||||
576,
|
||||
648,
|
||||
720,
|
||||
864,
|
||||
960,
|
||||
1080,
|
||||
1201
|
||||
},
|
||||
/* 2 SS */
|
||||
{
|
||||
/* DCM 0 */
|
||||
144,
|
||||
288,
|
||||
432,
|
||||
576,
|
||||
864,
|
||||
1152,
|
||||
1297,
|
||||
1441,
|
||||
1729,
|
||||
1921,
|
||||
2161,
|
||||
2401
|
||||
},
|
||||
/* 3 SS */
|
||||
{
|
||||
/* DCM 0 */
|
||||
216,
|
||||
432,
|
||||
648,
|
||||
864,
|
||||
1297,
|
||||
1729,
|
||||
1945,
|
||||
2161,
|
||||
2594,
|
||||
2882,
|
||||
3242,
|
||||
3602
|
||||
},
|
||||
/* 4 SS */
|
||||
{
|
||||
/* DCM 0 */
|
||||
288,
|
||||
576,
|
||||
864,
|
||||
1152,
|
||||
1729,
|
||||
2305,
|
||||
2594,
|
||||
2882,
|
||||
3458,
|
||||
3843,
|
||||
4323,
|
||||
4803
|
||||
},
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
void get_rate_he(UINT8 mcs, UINT8 bw, UINT8 nss, UINT8 dcm, ULONG *last_tx_rate)
|
||||
{
|
||||
ULONG value = 0;
|
||||
|
||||
if (nss == 0)
|
||||
nss = 1;
|
||||
|
||||
if (mcs >= MAX_NUM_HE_MCS_ENTRIES)
|
||||
mcs = MAX_NUM_HE_MCS_ENTRIES - 1;
|
||||
|
||||
if (nss > MAX_NUM_HE_SPATIAL_STREAMS)
|
||||
nss = MAX_NUM_HE_SPATIAL_STREAMS;
|
||||
|
||||
if (bw >= MAX_NUM_HE_BANDWIDTHS)
|
||||
bw = MAX_NUM_HE_BANDWIDTHS - 1;
|
||||
|
||||
nss--;
|
||||
|
||||
value = he_mcs_phyrate_mapping_table[bw][nss][mcs];
|
||||
/*In spec data rate when DCM =1 is half of the data rate when DCM = 0*/
|
||||
if (dcm && value)
|
||||
value = value / 2 ;
|
||||
|
||||
*last_tx_rate = (ULONG)value;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
static INT32 getLegacyOFDMMCSIndex(UINT8 MCS)
|
||||
{
|
||||
INT32 mcs_index = MCS;
|
||||
|
||||
if (MCS == 0xb)
|
||||
mcs_index = 0;
|
||||
else if (MCS == 0xf)
|
||||
mcs_index = 1;
|
||||
else if (MCS == 0xa)
|
||||
mcs_index = 2;
|
||||
else if (MCS == 0xe)
|
||||
mcs_index = 3;
|
||||
else if (MCS == 0x9)
|
||||
mcs_index = 4;
|
||||
else if (MCS == 0xd)
|
||||
mcs_index = 5;
|
||||
else if (MCS == 0x8)
|
||||
mcs_index = 6;
|
||||
else if (MCS == 0xc)
|
||||
mcs_index = 7;
|
||||
|
||||
return mcs_index;
|
||||
}
|
||||
|
||||
static INT MCSMappingRateTable[] = {
|
||||
2, 4, 11, 22, 12, 18, 24, 36, 48, 72, 96, 108, 109, 110, 111, 112,/* CCK and OFDM */
|
||||
13, 26, 39, 52, 78, 104, 117, 130, 26, 52, 78, 104, 156, 208, 234, 260,
|
||||
39, 78, 117, 156, 234, 312, 351, 390, /* BW 20, 800ns GI, MCS 0~23 */
|
||||
27, 54, 81, 108, 162, 216, 243, 270, 54, 108, 162, 216, 324, 432, 486, 540,
|
||||
81, 162, 243, 324, 486, 648, 729, 810, /* BW 40, 800ns GI, MCS 0~23 */
|
||||
14, 29, 43, 57, 87, 115, 130, 144, 29, 59, 87, 115, 173, 230, 260, 288,
|
||||
43, 87, 130, 173, 260, 317, 390, 433, /* BW 20, 400ns GI, MCS 0~23 */
|
||||
30, 60, 90, 120, 180, 240, 270, 300, 60, 120, 180, 240, 360, 480, 540, 600,
|
||||
90, 180, 270, 360, 540, 720, 810, 900, /* BW 40, 400ns GI, MCS 0~23 */
|
||||
|
||||
/*for 11ac:20 Mhz 800ns GI*/
|
||||
6, 13, 19, 26, 39, 52, 58, 65, 78, 90, /*1ss mcs 0~8*/
|
||||
13, 26, 39, 52, 78, 104, 117, 130, 156, 180, /*2ss mcs 0~8*/
|
||||
19, 39, 58, 78, 117, 156, 175, 195, 234, 260, /*3ss mcs 0~9*/
|
||||
26, 52, 78, 104, 156, 208, 234, 260, 312, 360, /*4ss mcs 0~8*/
|
||||
|
||||
/*for 11ac:40 Mhz 800ns GI*/
|
||||
13, 27, 40, 54, 81, 108, 121, 135, 162, 180, /*1ss mcs 0~9*/
|
||||
27, 54, 81, 108, 162, 216, 243, 270, 324, 360, /*2ss mcs 0~9*/
|
||||
40, 81, 121, 162, 243, 324, 364, 405, 486, 540, /*3ss mcs 0~9*/
|
||||
54, 108, 162, 216, 324, 432, 486, 540, 648, 720, /*4ss mcs 0~9*/
|
||||
|
||||
/*for 11ac:80 Mhz 800ns GI*/
|
||||
29, 58, 87, 117, 175, 234, 263, 292, 351, 390, /*1ss mcs 0~9*/
|
||||
58, 117, 175, 243, 351, 468, 526, 585, 702, 780, /*2ss mcs 0~9*/
|
||||
87, 175, 263, 351, 526, 702, 0, 877, 1053, 1170, /*3ss mcs 0~9*/
|
||||
117, 234, 351, 468, 702, 936, 1053, 1170, 1404, 1560, /*4ss mcs 0~9*/
|
||||
|
||||
/*for 11ac:160 Mhz 800ns GI*/
|
||||
58, 117, 175, 234, 351, 468, 526, 585, 702, 780, /*1ss mcs 0~9*/
|
||||
117, 234, 351, 468, 702, 936, 1053, 1170, 1404, 1560, /*2ss mcs 0~9*/
|
||||
175, 351, 526, 702, 1053, 1404, 1579, 1755, 2160, 0, /*3ss mcs 0~8*/
|
||||
234, 468, 702, 936, 1404, 1872, 2106, 2340, 2808, 3120, /*4ss mcs 0~9*/
|
||||
|
||||
/*for 11ac:20 Mhz 400ns GI*/
|
||||
7, 14, 21, 28, 43, 57, 65, 72, 86, 100, /*1ss mcs 0~8*/
|
||||
14, 28, 43, 57, 86, 115, 130, 144, 173, 200, /*2ss mcs 0~8*/
|
||||
21, 43, 65, 86, 130, 173, 195, 216, 260, 288, /*3ss mcs 0~9*/
|
||||
28, 57, 86, 115, 173, 231, 260, 288, 346, 400, /*4ss mcs 0~8*/
|
||||
|
||||
/*for 11ac:40 Mhz 400ns GI*/
|
||||
15, 30, 45, 60, 90, 120, 135, 150, 180, 200, /*1ss mcs 0~9*/
|
||||
30, 60, 90, 120, 180, 240, 270, 300, 360, 400, /*2ss mcs 0~9*/
|
||||
45, 90, 135, 180, 270, 360, 405, 450, 540, 600, /*3ss mcs 0~9*/
|
||||
60, 120, 180, 240, 360, 480, 540, 600, 720, 800, /*4ss mcs 0~9*/
|
||||
|
||||
/*for 11ac:80 Mhz 400ns GI*/
|
||||
32, 65, 97, 130, 195, 260, 292, 325, 390, 433, /*1ss mcs 0~9*/
|
||||
65, 130, 195, 260, 390, 520, 585, 650, 780, 866, /*2ss mcs 0~9*/
|
||||
97, 195, 292, 390, 585, 780, 0, 975, 1170, 1300, /*3ss mcs 0~9*/
|
||||
130, 260, 390, 520, 780, 1040, 1170, 1300, 1560, 1733, /*4ss mcs 0~9*/
|
||||
|
||||
/*for 11ac:160 Mhz 400ns GI*/
|
||||
65, 130, 195, 260, 390, 520, 585, 650, 780, 866, /*1ss mcs 0~9*/
|
||||
130, 260, 390, 520, 780, 1040, 1170, 1300, 1560, 1733, /*2ss mcs 0~9*/
|
||||
195, 390, 585, 780, 1170, 1560, 1755, 1950, 2340, 0, /*3ss mcs 0~8*/
|
||||
260, 520, 780, 1040, 1560, 2080, 2340, 2600, 3120, 3466, /*4ss mcs 0~9*/
|
||||
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
|
||||
20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37
|
||||
}; /* 3*3 */
|
||||
|
||||
|
||||
void getRate(HTTRANSMIT_SETTING_FIX HTSetting, ULONG *fLastTxRxRate)
|
||||
{
|
||||
UINT8 Antenna = 0;
|
||||
UINT8 MCS = HTSetting.field.MCS;
|
||||
int rate_count = sizeof(MCSMappingRateTable) / sizeof(int);
|
||||
int rate_index = 0;
|
||||
int value = 0;
|
||||
|
||||
if (HTSetting.field.MODE >= MODE_VHT) {
|
||||
MCS = HTSetting.field.MCS & 0xf;
|
||||
Antenna = (HTSetting.field.MCS >> 4) + 1;
|
||||
|
||||
if (HTSetting.field.BW == BW_20) {
|
||||
rate_index = 112 + ((Antenna - 1) * 10) +
|
||||
((UCHAR)HTSetting.field.ShortGI * 160) +
|
||||
((UCHAR)MCS);
|
||||
} else if (HTSetting.field.BW == BW_40) {
|
||||
rate_index = 152 + ((Antenna - 1) * 10) +
|
||||
((UCHAR)HTSetting.field.ShortGI * 160) +
|
||||
((UCHAR)MCS);
|
||||
} else if (HTSetting.field.BW == BW_80) {
|
||||
rate_index = 192 + ((Antenna - 1) * 10) +
|
||||
((UCHAR)HTSetting.field.ShortGI * 160) +
|
||||
((UCHAR)MCS);
|
||||
} else if (HTSetting.field.BW == BW_160) {
|
||||
rate_index = 232 + ((Antenna - 1) * 10) +
|
||||
((UCHAR)HTSetting.field.ShortGI * 160) +
|
||||
((UCHAR)MCS);
|
||||
}
|
||||
} else {
|
||||
if (HTSetting.field.MODE >= MODE_HTMIX) {
|
||||
MCS = HTSetting.field.MCS;
|
||||
|
||||
if ((HTSetting.field.MODE == MODE_HTMIX)
|
||||
|| (HTSetting.field.MODE == MODE_HTGREENFIELD))
|
||||
Antenna = (MCS >> 3) + 1;
|
||||
|
||||
/* map back to 1SS MCS , multiply by antenna numbers later */
|
||||
if (MCS > 7)
|
||||
MCS %= 8;
|
||||
|
||||
rate_index = 16 + ((UCHAR)HTSetting.field.BW * 24) + ((UCHAR)HTSetting.field.ShortGI * 48) + ((UCHAR)MCS);
|
||||
} else {
|
||||
if (HTSetting.field.MODE == MODE_OFDM)
|
||||
rate_index = getLegacyOFDMMCSIndex(HTSetting.field.MCS) + 4;
|
||||
else if (HTSetting.field.MODE == MODE_CCK)
|
||||
rate_index = (UCHAR)(HTSetting.field.MCS);
|
||||
}
|
||||
}
|
||||
|
||||
if (rate_index < 0)
|
||||
rate_index = 0;
|
||||
|
||||
if (rate_index >= rate_count)
|
||||
rate_index = rate_count - 1;
|
||||
|
||||
if (HTSetting.field.MODE < MODE_VHT)
|
||||
value = (MCSMappingRateTable[rate_index] * 5) / 10;
|
||||
else
|
||||
value = MCSMappingRateTable[rate_index];
|
||||
|
||||
if (HTSetting.field.MODE >= MODE_HTMIX && HTSetting.field.MODE < MODE_VHT)
|
||||
value *= Antenna;
|
||||
|
||||
*fLastTxRxRate = (ULONG)value;
|
||||
return;
|
||||
}
|
79
package/mtk/applications/luci-app-mtk/src/security.c
Normal file
79
package/mtk/applications/luci-app-mtk/src/security.c
Normal file
@ -0,0 +1,79 @@
|
||||
#include "mtwifi.h"
|
||||
|
||||
const char *GetEncryModeStr(UINT32 encryMode)
|
||||
{
|
||||
if (IS_CIPHER_NONE(encryMode))
|
||||
return "NONE";
|
||||
else if (IS_CIPHER_WEP(encryMode))
|
||||
return "WEP";
|
||||
else if (IS_CIPHER_TKIP(encryMode) && IS_CIPHER_CCMP128(encryMode))
|
||||
return "TKIPAES";
|
||||
else if (IS_CIPHER_TKIP(encryMode))
|
||||
return "TKIP";
|
||||
else if (IS_CIPHER_CCMP128(encryMode))
|
||||
return "AES";
|
||||
else if (IS_CIPHER_CCMP256(encryMode))
|
||||
return "CCMP256";
|
||||
else if (IS_CIPHER_GCMP128(encryMode))
|
||||
return "GCMP128";
|
||||
else if (IS_CIPHER_GCMP256(encryMode))
|
||||
return "GCMP256";
|
||||
else if (IS_CIPHER_BIP_CMAC128(encryMode))
|
||||
return "BIP-CMAC128";
|
||||
else if (IS_CIPHER_BIP_CMAC256(encryMode))
|
||||
return "BIP-CMAC256";
|
||||
else if (IS_CIPHER_BIP_GMAC128(encryMode))
|
||||
return "BIP-GMAC128";
|
||||
else if (IS_CIPHER_BIP_GMAC256(encryMode))
|
||||
return "BIP-GMAC256";
|
||||
else
|
||||
return "Unknown";
|
||||
}
|
||||
|
||||
const char *GetAuthModeStr(UINT32 authMode)
|
||||
{
|
||||
if (IS_AKM_OPEN(authMode))
|
||||
return "OPEN";
|
||||
else if (IS_AKM_SHARED(authMode))
|
||||
return "SHARED";
|
||||
else if (IS_AKM_AUTOSWITCH(authMode))
|
||||
return "WEPAUTO";
|
||||
else if (IS_AKM_WPANONE(authMode))
|
||||
return "WPANONE";
|
||||
else if (IS_AKM_FT_WPA2PSK(authMode) && IS_AKM_FT_SAE_SHA256(authMode))
|
||||
return "FT-WPA2PSKWPA3PSK";
|
||||
else if (IS_AKM_WPA1(authMode) && IS_AKM_WPA2(authMode))
|
||||
return "WPA1WPA2";
|
||||
else if (IS_AKM_WPA1PSK(authMode) && IS_AKM_WPA2PSK(authMode))
|
||||
return "WPAPSKWPA2PSK";
|
||||
else if (IS_AKM_WPA2PSK(authMode) && IS_AKM_WPA3PSK(authMode))
|
||||
return "WPA2PSKWPA3PSK";
|
||||
else if (IS_AKM_WPA2PSK(authMode) && IS_AKM_WPA2PSK_SHA256(authMode) && IS_AKM_WPA3PSK(authMode))
|
||||
return "WPA2PSKMIXWPA3PSK";
|
||||
else if (IS_AKM_FT_SAE_SHA256(authMode))
|
||||
return "FT-SAE";
|
||||
else if (IS_AKM_WPA3PSK(authMode))
|
||||
return "WPA3PSK";
|
||||
else if (IS_AKM_WPA1(authMode))
|
||||
return "WPA";
|
||||
else if (IS_AKM_WPA1PSK(authMode))
|
||||
return "WPAPSK";
|
||||
else if (IS_AKM_FT_WPA2(authMode))
|
||||
return "FT-WPA2";
|
||||
else if (IS_AKM_FT_WPA2PSK(authMode))
|
||||
return "FT-WPA2PSK";
|
||||
else if (IS_AKM_WPA3(authMode)) /* WPA3 will be always accompanied by WPA2, so it should put before the WPA2 */
|
||||
return "WPA3";
|
||||
else if (IS_AKM_WPA2(authMode))
|
||||
return "WPA2";
|
||||
else if (IS_AKM_WPA2(authMode) && IS_AKM_WPA2_SHA256(authMode))
|
||||
return "WPA2MIX";
|
||||
else if (IS_AKM_WPA2PSK(authMode))
|
||||
return "WPA2PSK";
|
||||
else if (IS_AKM_WPA3_192BIT(authMode))
|
||||
return "WPA3-192";
|
||||
else if (IS_AKM_OWE(authMode))
|
||||
return "OWE";
|
||||
else
|
||||
return "Unknown";
|
||||
}
|
17
package/mtk/applications/luci-app-mtwifi-cfg/Makefile
Normal file
17
package/mtk/applications/luci-app-mtwifi-cfg/Makefile
Normal file
@ -0,0 +1,17 @@
|
||||
#
|
||||
# Copyright (C) hanwckf <hanwckf@vip.qq.com>
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
LUCI_TITLE:=LuCI support for mtwifi-cfg
|
||||
LUCI_DEPENDS:=+mtwifi-cfg
|
||||
LUCI_PKGARCH:=all
|
||||
|
||||
PKG_VERSION:=1
|
||||
|
||||
include $(TOPDIR)/feeds/luci/luci.mk
|
||||
|
||||
# call BuildPackage - OpenWrt buildroot signature
|
@ -0,0 +1,57 @@
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=UTF-8\n"
|
||||
|
||||
msgid "Target Wake Time"
|
||||
msgstr "目标唤醒时间(TWT)"
|
||||
|
||||
msgid "MU-MIMO DL"
|
||||
msgstr "下行 MU-MIMO"
|
||||
|
||||
msgid "MU-MIMO UL"
|
||||
msgstr "上行 MU-MIMO"
|
||||
|
||||
msgid "OFDMA DL"
|
||||
msgstr "下行 OFDMA"
|
||||
|
||||
msgid "OFDMA UL"
|
||||
msgstr "上行 OFDMA"
|
||||
|
||||
msgid "A-MSDU"
|
||||
msgstr "MSDU聚合(A-MSDU)"
|
||||
|
||||
msgid "Auto Block ACK"
|
||||
msgstr "自动块确认"
|
||||
|
||||
msgid "U-APSD"
|
||||
msgstr "U-APSD 省电模式"
|
||||
|
||||
msgid "Kick low RSSI station threshold"
|
||||
msgstr "弱信号剔除阈值"
|
||||
|
||||
|
||||
msgid "Station associate threshold"
|
||||
msgstr "弱信号接入阈值"
|
||||
|
||||
msgid "802.11V roam steering threshold"
|
||||
msgstr "802.11V漫游引导阈值"
|
||||
|
||||
|
||||
msgid "802.11V roam target bssid"
|
||||
msgstr "802.11V漫游引导目标BSSID"
|
||||
|
||||
|
||||
msgid "only supports mt_wifi driver"
|
||||
msgstr "仅支持MTK闭源驱动,漫游域相关参数自动生成无需设置.确认路由器自身lan ip均在同一网段"
|
||||
|
||||
msgid "Wireless HWNAT"
|
||||
msgstr "无线硬件加速"
|
||||
|
||||
msgid "Band Steering"
|
||||
msgstr "引导已连接的强信号双频2.4G设备至5G频段"
|
||||
|
||||
msgid "Wireless configuration error"
|
||||
msgstr "无线网络设置错误"
|
||||
|
||||
msgid "At least one MBSSID needs to be reserved"
|
||||
msgstr "至少需要保留1个MBSSID"
|
||||
|
@ -0,0 +1,17 @@
|
||||
#!/bin/sh
|
||||
|
||||
if [ -d /www/luci-static/resources/view/network ]; then
|
||||
mv -f /usr/share/luci-app-mtwifi-cfg/wireless-mtk.js /www/luci-static/resources/view/network/wireless.js
|
||||
fi
|
||||
|
||||
if [ -d /usr/share/luci/menu.d ]; then
|
||||
mv -f /usr/share/luci-app-mtwifi-cfg/luci-mod-status.json /usr/share/luci/menu.d/luci-mod-status.json
|
||||
fi
|
||||
|
||||
luci_network_js="/www/luci-static/resources/network.js"
|
||||
|
||||
if [ -f $luci_network_js ]; then
|
||||
if ! grep -sq 'ra\[xiyez\]' $luci_network_js ; then
|
||||
sed -i 's#/^wlan\\d+/,#/^wlan\\d+/,/^ra[xiyez]?\\d+/,/^apcli[xiyez]?\\d+/,#' $luci_network_js
|
||||
fi
|
||||
fi
|
@ -0,0 +1,143 @@
|
||||
{
|
||||
"admin/status/overview": {
|
||||
"title": "Overview",
|
||||
"order": 1,
|
||||
"action": {
|
||||
"type": "template",
|
||||
"path": "admin_status/index"
|
||||
},
|
||||
"depends": {
|
||||
"acl": [ "luci-mod-status-index" ]
|
||||
}
|
||||
},
|
||||
|
||||
"admin/status/iptables": {
|
||||
"title": "Firewall",
|
||||
"order": 2,
|
||||
"action": {
|
||||
"type": "view",
|
||||
"path": "status/iptables"
|
||||
},
|
||||
"depends": {
|
||||
"acl": [ "luci-mod-status-firewall" ]
|
||||
}
|
||||
},
|
||||
|
||||
"admin/status/routes": {
|
||||
"title": "Routing",
|
||||
"order": 3,
|
||||
"action": {
|
||||
"type": "view",
|
||||
"path": "status/routes"
|
||||
},
|
||||
"depends": {
|
||||
"acl": [ "luci-mod-status-routes" ]
|
||||
}
|
||||
},
|
||||
|
||||
"admin/status/logs": {
|
||||
"title": "System Log",
|
||||
"order": 4,
|
||||
"action": {
|
||||
"type": "alias",
|
||||
"path": "admin/status/logs/syslog"
|
||||
},
|
||||
"depends": {
|
||||
"acl": [ "luci-mod-status-logs" ]
|
||||
}
|
||||
},
|
||||
|
||||
"admin/status/logs/syslog": {
|
||||
"title": "System Log",
|
||||
"order": 1,
|
||||
"action": {
|
||||
"type": "view",
|
||||
"path": "status/syslog"
|
||||
}
|
||||
},
|
||||
|
||||
"admin/status/logs/dmesg": {
|
||||
"title": "Kernel Log",
|
||||
"order": 2,
|
||||
"action": {
|
||||
"type": "view",
|
||||
"path": "status/dmesg"
|
||||
}
|
||||
},
|
||||
|
||||
"admin/status/processes": {
|
||||
"title": "Processes",
|
||||
"order": 6,
|
||||
"action": {
|
||||
"type": "view",
|
||||
"path": "status/processes"
|
||||
},
|
||||
"depends": {
|
||||
"acl": [ "luci-mod-status-processes" ]
|
||||
}
|
||||
},
|
||||
|
||||
"admin/status/channel_analysis": {
|
||||
"title": "Channel Analysis",
|
||||
"order": 7,
|
||||
"action": {
|
||||
"type": "view",
|
||||
"path": "status/channel_analysis"
|
||||
},
|
||||
"depends": {
|
||||
"acl": [ "luci-mod-status-channel_analysis" ],
|
||||
"uci": { "wireless": { "@wifi-device": { "type": "mac80211" } } }
|
||||
}
|
||||
},
|
||||
|
||||
"admin/status/realtime": {
|
||||
"title": "Realtime Graphs",
|
||||
"order": 7,
|
||||
"action": {
|
||||
"type": "alias",
|
||||
"path": "admin/status/realtime/load"
|
||||
},
|
||||
"depends": {
|
||||
"acl": [ "luci-mod-status-realtime" ]
|
||||
}
|
||||
},
|
||||
|
||||
"admin/status/realtime/load": {
|
||||
"title": "Load",
|
||||
"order": 1,
|
||||
"action": {
|
||||
"type": "view",
|
||||
"path": "status/load"
|
||||
}
|
||||
},
|
||||
|
||||
"admin/status/realtime/bandwidth": {
|
||||
"title": "Traffic",
|
||||
"order": 2,
|
||||
"action": {
|
||||
"type": "view",
|
||||
"path": "status/bandwidth"
|
||||
}
|
||||
},
|
||||
|
||||
"admin/status/realtime/wireless": {
|
||||
"title": "Wireless",
|
||||
"order": 3,
|
||||
"action": {
|
||||
"type": "view",
|
||||
"path": "status/wireless"
|
||||
},
|
||||
"depends": {
|
||||
"uci": { "wireless": { "@wifi-device": true } }
|
||||
}
|
||||
},
|
||||
|
||||
"admin/status/realtime/connections": {
|
||||
"title": "Connections",
|
||||
"order": 4,
|
||||
"action": {
|
||||
"type": "view",
|
||||
"path": "status/connections"
|
||||
}
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,19 @@
|
||||
# Copyright (C) 2016 Openwrt.org
|
||||
#
|
||||
# This is free software, licensed under the Apache License, Version 2.0 .
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
LUCI_TITLE:=LuCI support for MWAN3 Helper chinaroute
|
||||
LUCI_DEPENDS:= dnsmasq-full +ipset
|
||||
LUCI_PKGARCH:=all
|
||||
PKG_VERSION:=1
|
||||
PKG_RELEASE:=3
|
||||
|
||||
include $(TOPDIR)/feeds/luci/luci.mk
|
||||
|
||||
|
||||
# call BuildPackage - OpenWrt buildroot signature
|
||||
|
||||
|
@ -0,0 +1,28 @@
|
||||
|
||||
-- Licensed to the public under the GNU General Public License v3.
|
||||
|
||||
module("luci.controller.mwan3helper", package.seeall)
|
||||
|
||||
function index()
|
||||
if not nixio.fs.access("/etc/config/mwan3helper") then
|
||||
return
|
||||
end
|
||||
|
||||
|
||||
local page = entry({"admin", "services", "mwan3helper"},alias("admin", "services", "mwan3helper", "client"),_("MWAN3 Helper"), 300)
|
||||
page.dependent = true
|
||||
page.acl_depends = { "luci-app-mwan3helper" }
|
||||
entry({"admin", "services", "mwan3helper", "client"},cbi("mwan3helper/client"),_("Settings"), 10).leaf = true
|
||||
|
||||
entry({"admin", "services", "mwan3helper", "lists"},cbi("mwan3helper/list"),_("IPSet Lists"), 20).leaf = true
|
||||
|
||||
entry({"admin","services","mwan3helper","status"},call("act_status")).leaf=true
|
||||
|
||||
end
|
||||
|
||||
function act_status()
|
||||
local e={}
|
||||
e.running=luci.sys.call("pgrep mwan3dns >/dev/null")==0
|
||||
luci.http.prepare_content("application/json")
|
||||
luci.http.write_json(e)
|
||||
end
|
@ -0,0 +1,23 @@
|
||||
|
||||
|
||||
m = Map("mwan3helper")
|
||||
m.title = translate("MWAN3 Helper")
|
||||
|
||||
s = m:section(TypedSection, "mwan3helper")
|
||||
s.addremove = false
|
||||
s.anonymous = true
|
||||
|
||||
o = s:option(Flag, "enabled", translate("启用转发"))
|
||||
o.rmempty = false
|
||||
|
||||
|
||||
o = s:option(ListValue, "mode", translate("转发流量模式"))
|
||||
o:value("0", translate("国外流量"))
|
||||
o:value("1", translate("GFWLIST流量"))
|
||||
|
||||
o = s:option(Value, "dns", translate("转发流量至IP"))
|
||||
o = s:option(Value, "dev", translate("设备"))
|
||||
o = s:option(Flag, "dnsen", translate("启用 DNS 防污染"))
|
||||
o.rmempty = false
|
||||
o = s:option(Value, "dnsserver", translate("Anti-pollution DNS Server"))
|
||||
return m
|
@ -0,0 +1,37 @@
|
||||
|
||||
|
||||
m = Map("mwan3helper")
|
||||
m.title = translate("MWAN3 IPSets")
|
||||
|
||||
s = m:section(TypedSection, "mwan3helper")
|
||||
s.addremove = false
|
||||
s.anonymous = true
|
||||
|
||||
o = s:option(DummyValue, "gfwlist", translate("GFW列表"))
|
||||
o.description = translate("GFW列表数据: 5207 条,IPSET 名称为 gfwlist")
|
||||
|
||||
o = s:option(DummyValue, "all_cn", translate("中国所有IP地址"))
|
||||
o.description = translate("中国所有IP地址路由表数据: 8304 条, IPSET 名称为 cn")
|
||||
|
||||
o = s:option(DummyValue, "chinatelecom", translate("中国电信"))
|
||||
o.description = translate("中国电信路由表数据: 1948 条, IPSET 名称为 ct")
|
||||
|
||||
o = s:option(DummyValue, "unicom_cnc", translate("中国联通/网通"))
|
||||
o.description = translate("中国联通/网通路由表数据: 895 条, IPSET 名称为 cnc")
|
||||
|
||||
o = s:option(DummyValue, "cmcc", translate("中国移动"))
|
||||
o.description = translate("中国移动路由表数据: 55 条, IPSET 名称为 cmcc")
|
||||
|
||||
o = s:option(DummyValue, "crtc", translate("中国铁通"))
|
||||
o.description = translate("中国铁通路由表数据: 16 条, IPSET 名称为 crtc")
|
||||
|
||||
o = s:option(DummyValue, "cernet", translate("中国教育网"))
|
||||
o.description = translate("中国教育网路由表数据: 162 条, IPSET 名称为 cernet")
|
||||
|
||||
o = s:option(DummyValue, "gwbn", translate("长城宽带/鹏博士"))
|
||||
o.description = translate("长城宽带/鹏博士: 94 条, IPSET 名称为 gwbn")
|
||||
|
||||
o = s:option(DummyValue, "othernet", translate("中国其他ISP"))
|
||||
o.description = translate("中国其他ISP: 5134 条, IPSET 名称为 othernet")
|
||||
|
||||
return m
|
@ -0,0 +1,22 @@
|
||||
<script type="text/javascript">//<![CDATA[
|
||||
XHR.poll(3, '<%=url([[admin]], [[services]], [[mwan3helper]], [[status]])%>', null,
|
||||
function(x, data) {
|
||||
var tb = document.getElementById('mwan3helper_status');
|
||||
if (data && tb) {
|
||||
if (data.running) {
|
||||
var links = '<em><b><font color=green>MWAN3 Helper <%:RUNNING%></font></b></em>';
|
||||
tb.innerHTML = links;
|
||||
} else {
|
||||
tb.innerHTML = '<em><b><font color=red>MWAN3 Helper <%:NOT RUNNING%></font></b></em>';
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
//]]>
|
||||
</script>
|
||||
<style>.mar-10 {margin-left: 50px; margin-right: 10px;}</style>
|
||||
<fieldset class="cbi-section">
|
||||
<p id="mwan3helper_status">
|
||||
<em><%:Collecting data...%></em>
|
||||
</p>
|
||||
</fieldset>
|
@ -0,0 +1,24 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \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"
|
||||
|
||||
msgid "MWAN3 Helper"
|
||||
msgstr "MWAN3 分流助手"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "设置"
|
||||
|
||||
msgid "IPSet Lists"
|
||||
msgstr "IPSet列表"
|
||||
|
||||
msgid "MWAN3 Helper generate IPSets"
|
||||
msgstr "自动生成中国地址段和各大ISP运营商的 IPSet 地址段,并解决国外域名的污染问题,帮助MWAN3分流 ISP/WireGuard 等"
|
||||
|
||||
msgid "Enable GFW IPSet"
|
||||
msgstr "启用 GFW IPSet"
|
@ -0,0 +1,6 @@
|
||||
|
||||
config mwan3helper 'config'
|
||||
option dns '192.168.6.2'
|
||||
option dev 'br-lan'
|
||||
option enabled '0'
|
||||
|
@ -0,0 +1,84 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
# Copyright (c) 2011-2015 OpenWrt.org
|
||||
|
||||
START=60
|
||||
|
||||
USE_PROCD=1
|
||||
|
||||
start_service(){
|
||||
/etc/mwan3helper/genipset.sh cn '/etc/mwan3helper/all_cn.txt'
|
||||
/etc/mwan3helper/genipset.sh ct '/etc/mwan3helper/chinatelecom.txt'
|
||||
/etc/mwan3helper/genipset.sh cnc '/etc/mwan3helper/unicom_cnc.txt'
|
||||
/etc/mwan3helper/genipset.sh cmcc '/etc/mwan3helper/cmcc.txt'
|
||||
/etc/mwan3helper/genipset.sh crtc '/etc/mwan3helper/crtc.txt'
|
||||
/etc/mwan3helper/genipset.sh cernet '/etc/mwan3helper/cernet.txt'
|
||||
/etc/mwan3helper/genipset.sh gwbn '/etc/mwan3helper/gwbn.txt'
|
||||
/etc/mwan3helper/genipset.sh othernet '/etc/mwan3helper/othernet.txt'
|
||||
en=$(uci get mwan3helper.config.enabled 2>/dev/null)
|
||||
dns=$(uci get mwan3helper.config.dns 2>/dev/null)
|
||||
dev=$(uci get mwan3helper.config.dev 2>/dev/null)
|
||||
dnsen=$(uci get mwan3helper.config.dnsen 2>/dev/null)
|
||||
mode=$(uci get mwan3helper.config.mode 2>/dev/null)
|
||||
dnsserver=$(uci get mwan3helper.config.dnsserver 2>/dev/null)
|
||||
if [ $en -eq 1 ]; then
|
||||
mkdir -p /tmp/etc/dnsmasq-mwan3.d
|
||||
ipset -N gfwlist hash:net 2>/dev/null
|
||||
if [ $dnsen -eq 1 ]; then
|
||||
awk '!/^$/&&!/^#/{printf("ipset=/.%s/'"gfwlist"'\n",$0)}' /etc/mwan3helper/gfw.txt > /tmp/etc/dnsmasq-mwan3.d/mwan3_gfwlist.conf
|
||||
awk '!/^$/&&!/^#/{printf("server=/.%s/'"$dnsserver#53"'\n",$0)}' /etc/mwan3helper/gfw.txt >> /tmp/etc/dnsmasq-mwan3.d/mwan3_gfwlist.conf
|
||||
cat > /tmp/dnsmasq.d/dnsmasq-mwan3.conf <<EOF
|
||||
conf-dir=/var/etc/dnsmasq-mwan3.d
|
||||
EOF
|
||||
fi
|
||||
/etc/init.d/dnsmasq restart
|
||||
ip route del default table 200
|
||||
ip route add default via $dns dev $dev table 200
|
||||
ip rule del table 200
|
||||
ip rule add table 200 fwmark 200
|
||||
|
||||
iptables -t mangle -D PREROUTING -i br-lan -j MARK --set-mark 200
|
||||
iptables -t mangle -D PREROUTING -i br-lan -m set --match-set cn dst -j MARK --set-mark 0
|
||||
iptables -t mangle -D PREROUTING -s $dns -j MARK --set-mark 0
|
||||
iptables -t mangle -D PREROUTING -i br-lan -m set --match-set gfwlist dst -j MARK --set-mark 200
|
||||
if [ $mode -eq 0 ]; then
|
||||
iptables -t mangle -A PREROUTING -i br-lan -j MARK --set-mark 200
|
||||
iptables -t mangle -A PREROUTING -i br-lan -m set --match-set cn dst -j MARK --set-mark 0
|
||||
fi
|
||||
iptables -t mangle -A PREROUTING -i br-lan -m set --match-set gfwlist dst -j MARK --set-mark 200
|
||||
iptables -t mangle -A PREROUTING -s $dns -j MARK --set-mark 0
|
||||
sed -i '/\/etc\/init.d\/mwan3helper start/d' /etc/firewall.user
|
||||
echo "/etc/init.d/mwan3helper start" >> /etc/firewall.user
|
||||
ipset add gfwlist 91.108.4.0/22
|
||||
ipset add gfwlist 91.108.8.0/22
|
||||
ipset add gfwlist 91.108.56.0/22
|
||||
ipset add gfwlist 95.161.64.0/20
|
||||
ipset add gfwlist 149.154.160.0/22
|
||||
ipset add gfwlist 149.154.164.0/22
|
||||
fi
|
||||
}
|
||||
|
||||
stop_service(){
|
||||
rm -f /tmp/dnsmasq.d/dnsmasq-mwan3.conf
|
||||
/etc/init.d/dnsmasq restart
|
||||
dns=$(uci get mwan3helper.config.dns 2>/dev/null)
|
||||
dev=$(uci get mwan3helper.config.dev 2>/dev/null)
|
||||
ip route del default table 200
|
||||
|
||||
ip rule del table 200
|
||||
iptables -t mangle -D PREROUTING -i br-lan -j MARK --set-mark 200
|
||||
iptables -t mangle -D PREROUTING -i br-lan -m set --match-set cn dst -j MARK --set-mark 0
|
||||
iptables -t mangle -D PREROUTING -s $dns -j MARK --set-mark 0
|
||||
iptables -t mangle -D PREROUTING -i br-lan -m set --match-set gfwlist dst -j MARK --set-mark 200
|
||||
sed -i '/\/etc\/init.d\/mwan3helper start/d' /etc/firewall.user
|
||||
|
||||
}
|
||||
|
||||
reload_service() {
|
||||
stop
|
||||
start
|
||||
}
|
||||
|
||||
service_triggers() {
|
||||
procd_add_reload_trigger "mwan3helper"
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,171 @@
|
||||
1.51.0.0/16
|
||||
1.184.0.0/15
|
||||
42.244.0.0/14
|
||||
43.252.48.0/22
|
||||
49.52.0.0/14
|
||||
49.120.0.0/14
|
||||
49.140.0.0/15
|
||||
49.208.0.0/15
|
||||
58.154.0.0/15
|
||||
58.192.0.0/15
|
||||
58.194.0.0/15
|
||||
58.196.0.0/15
|
||||
58.198.0.0/15
|
||||
58.200.0.0/13
|
||||
59.64.0.0/14
|
||||
59.68.0.0/14
|
||||
59.72.0.0/15
|
||||
59.74.0.0/15
|
||||
59.76.0.0/16
|
||||
59.77.0.0/16
|
||||
59.78.0.0/15
|
||||
101.4.0.0/14
|
||||
101.76.0.0/15
|
||||
103.81.200.0/22
|
||||
103.87.20.0/22
|
||||
103.115.120.0/22
|
||||
103.137.60.0/24
|
||||
103.165.110.0/23
|
||||
103.205.162.0/24
|
||||
103.226.80.0/22
|
||||
110.64.0.0/15
|
||||
111.114.0.0/15
|
||||
111.116.0.0/15
|
||||
111.186.0.0/15
|
||||
113.54.0.0/15
|
||||
114.212.0.0/15
|
||||
114.214.0.0/16
|
||||
115.24.0.0/14
|
||||
115.154.0.0/15
|
||||
115.156.0.0/15
|
||||
115.158.0.0/16
|
||||
116.13.0.0/16
|
||||
116.56.0.0/15
|
||||
118.202.0.0/15
|
||||
118.228.0.0/15
|
||||
118.230.0.0/16
|
||||
120.94.0.0/16
|
||||
120.95.0.0/16
|
||||
121.48.0.0/15
|
||||
121.52.160.0/19
|
||||
121.192.0.0/16
|
||||
121.193.0.0/16
|
||||
121.194.0.0/15
|
||||
121.248.0.0/14
|
||||
122.204.0.0/14
|
||||
125.216.0.0/15
|
||||
125.218.0.0/16
|
||||
125.219.0.0/16
|
||||
125.220.0.0/15
|
||||
125.222.0.0/15
|
||||
175.185.0.0/16
|
||||
175.186.0.0/15
|
||||
180.84.0.0/15
|
||||
180.201.0.0/16
|
||||
180.208.0.0/15
|
||||
183.168.0.0/15
|
||||
183.170.0.0/16
|
||||
183.172.0.0/14
|
||||
192.124.154.0/24
|
||||
202.4.128.0/19
|
||||
202.38.2.0/23
|
||||
202.38.64.0/19
|
||||
202.38.96.0/19
|
||||
202.38.140.0/23
|
||||
202.38.146.0/23
|
||||
202.38.184.0/21
|
||||
202.38.192.0/18
|
||||
202.112.0.0/16
|
||||
202.113.0.0/20
|
||||
202.113.16.0/20
|
||||
202.113.32.0/19
|
||||
202.113.64.0/18
|
||||
202.113.128.0/18
|
||||
202.113.192.0/19
|
||||
202.113.224.0/20
|
||||
202.113.240.0/20
|
||||
202.114.0.0/19
|
||||
202.114.32.0/19
|
||||
202.114.64.0/18
|
||||
202.114.128.0/17
|
||||
202.115.0.0/19
|
||||
202.115.128.0/17
|
||||
202.116.0.0/19
|
||||
202.116.32.0/20
|
||||
202.116.48.0/20
|
||||
202.116.64.0/19
|
||||
202.116.96.0/19
|
||||
202.116.128.0/17
|
||||
202.117.0.0/18
|
||||
202.117.64.0/18
|
||||
202.117.128.0/17
|
||||
202.118.0.0/19
|
||||
202.118.32.0/19
|
||||
202.118.64.0/18
|
||||
202.118.128.0/17
|
||||
202.119.0.0/19
|
||||
202.119.32.0/19
|
||||
202.119.64.0/20
|
||||
202.119.80.0/20
|
||||
202.119.96.0/19
|
||||
202.119.128.0/17
|
||||
202.120.0.0/18
|
||||
202.120.64.0/18
|
||||
202.120.128.0/17
|
||||
202.121.0.0/16
|
||||
202.127.216.0/21
|
||||
202.127.224.0/19
|
||||
202.179.240.0/20
|
||||
202.192.0.0/13
|
||||
202.200.0.0/14
|
||||
202.204.0.0/14
|
||||
203.91.120.0/21
|
||||
210.25.0.0/16
|
||||
210.26.0.0/15
|
||||
210.28.0.0/14
|
||||
210.32.0.0/14
|
||||
210.36.0.0/14
|
||||
210.40.0.0/13
|
||||
211.64.0.0/14
|
||||
211.68.0.0/15
|
||||
211.70.0.0/15
|
||||
211.80.0.0/16
|
||||
211.81.0.0/16
|
||||
211.82.0.0/16
|
||||
211.83.0.0/16
|
||||
211.84.0.0/15
|
||||
211.86.0.0/15
|
||||
218.192.0.0/16
|
||||
218.193.0.0/16
|
||||
218.194.0.0/16
|
||||
218.195.0.0/16
|
||||
218.196.0.0/14
|
||||
219.216.0.0/15
|
||||
219.218.0.0/15
|
||||
219.220.0.0/16
|
||||
219.221.0.0/16
|
||||
219.222.0.0/15
|
||||
219.224.0.0/15
|
||||
219.226.0.0/16
|
||||
219.227.0.0/16
|
||||
219.228.0.0/15
|
||||
219.230.0.0/15
|
||||
219.242.0.0/15
|
||||
219.244.0.0/14
|
||||
222.16.0.0/15
|
||||
222.18.0.0/15
|
||||
222.20.0.0/15
|
||||
222.22.0.0/16
|
||||
222.23.0.0/16
|
||||
222.24.0.0/15
|
||||
222.26.0.0/15
|
||||
222.28.0.0/14
|
||||
222.192.0.0/14
|
||||
222.196.0.0/15
|
||||
222.198.0.0/16
|
||||
222.199.0.0/16
|
||||
222.200.0.0/14
|
||||
222.204.0.0/15
|
||||
222.206.0.0/15
|
||||
223.2.0.0/15
|
||||
223.128.0.0/15
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,55 @@
|
||||
36.128.0.0/10
|
||||
39.128.0.0/10
|
||||
43.239.172.0/22
|
||||
43.251.244.0/22
|
||||
45.121.68.0/22
|
||||
45.121.72.0/22
|
||||
45.121.172.0/22
|
||||
45.121.176.0/22
|
||||
45.122.96.0/21
|
||||
45.123.152.0/22
|
||||
45.124.36.0/22
|
||||
45.125.24.0/22
|
||||
45.253.72.0/22
|
||||
61.14.240.0/22
|
||||
61.14.244.0/22
|
||||
103.20.112.0/22
|
||||
103.21.176.0/22
|
||||
103.35.104.0/22
|
||||
103.61.156.0/22
|
||||
103.61.160.0/22
|
||||
103.62.24.0/22
|
||||
103.62.204.0/22
|
||||
103.62.208.0/22
|
||||
103.192.0.0/22
|
||||
103.192.144.0/22
|
||||
103.193.140.0/22
|
||||
103.203.164.0/22
|
||||
103.205.108.0/22
|
||||
103.205.116.0/22
|
||||
103.222.196.0/22
|
||||
111.0.0.0/10
|
||||
112.0.0.0/10
|
||||
117.128.0.0/10
|
||||
120.192.0.0/10
|
||||
175.176.188.0/22
|
||||
183.192.0.0/10
|
||||
211.103.0.0/17
|
||||
211.136.0.0/14
|
||||
211.140.0.0/15
|
||||
211.142.0.0/17
|
||||
211.142.128.0/17
|
||||
211.143.0.0/16
|
||||
218.200.0.0/14
|
||||
218.204.0.0/15
|
||||
218.206.0.0/15
|
||||
221.130.0.0/15
|
||||
221.176.0.0/13
|
||||
223.64.0.0/11
|
||||
223.96.0.0/12
|
||||
223.112.0.0/14
|
||||
223.116.0.0/15
|
||||
223.120.128.0/17
|
||||
223.121.128.0/17
|
||||
223.123.128.0/17
|
||||
223.124.0.0/14
|
@ -0,0 +1,16 @@
|
||||
36.192.0.0/11
|
||||
43.247.240.0/22
|
||||
61.232.0.0/14
|
||||
61.236.0.0/15
|
||||
101.144.0.0/12
|
||||
103.3.128.0/22
|
||||
110.96.0.0/11
|
||||
110.192.0.0/11
|
||||
115.180.0.0/15
|
||||
118.204.0.0/14
|
||||
120.90.0.0/15
|
||||
122.64.0.0/11
|
||||
123.64.0.0/11
|
||||
211.98.0.0/16
|
||||
221.172.0.0/14
|
||||
222.32.0.0/11
|
@ -0,0 +1,7 @@
|
||||
ipset -N $1 hash:net 2>/dev/null
|
||||
|
||||
echo "create $1 hash:net family inet hashsize 1024 maxelem 65536" > /tmp/mwan3.ipset
|
||||
cat $2 | sed -e "s/^/add $1 /" >> /tmp/mwan3.ipset
|
||||
ipset -! flush $1
|
||||
ipset -! restore < /tmp/mwan3.ipset 2>/dev/null
|
||||
rm -f /tmp/mwan3.ipset
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,290 @@
|
||||
1.94.0.0/15
|
||||
14.1.24.0/22
|
||||
14.103.0.0/16
|
||||
14.196.0.0/15
|
||||
42.196.0.0/14
|
||||
43.242.56.0/22
|
||||
43.242.144.0/22
|
||||
43.243.144.0/22
|
||||
43.243.148.0/22
|
||||
43.247.200.0/22
|
||||
43.247.204.0/22
|
||||
43.247.208.0/22
|
||||
43.247.224.0/22
|
||||
43.250.16.0/22
|
||||
43.250.20.0/22
|
||||
45.121.240.0/22
|
||||
45.121.244.0/22
|
||||
45.121.248.0/22
|
||||
45.121.252.0/22
|
||||
45.122.4.0/22
|
||||
45.122.8.0/22
|
||||
45.122.12.0/22
|
||||
45.122.16.0/22
|
||||
45.122.20.0/22
|
||||
45.122.24.0/22
|
||||
45.122.28.0/22
|
||||
45.122.32.0/22
|
||||
45.122.36.0/22
|
||||
45.122.40.0/22
|
||||
45.122.192.0/22
|
||||
45.122.196.0/22
|
||||
45.122.200.0/22
|
||||
45.122.204.0/22
|
||||
45.122.208.0/22
|
||||
45.122.212.0/22
|
||||
45.122.216.0/22
|
||||
45.123.28.0/22
|
||||
45.123.32.0/22
|
||||
45.123.36.0/22
|
||||
45.123.76.0/22
|
||||
45.123.80.0/22
|
||||
45.123.84.0/22
|
||||
45.123.88.0/22
|
||||
45.123.204.0/22
|
||||
45.123.212.0/22
|
||||
45.123.224.0/22
|
||||
45.123.228.0/22
|
||||
45.123.232.0/22
|
||||
45.123.236.0/22
|
||||
45.123.240.0/22
|
||||
45.123.244.0/22
|
||||
45.123.248.0/22
|
||||
45.123.252.0/22
|
||||
45.124.0.0/22
|
||||
45.124.100.0/22
|
||||
45.252.152.0/22
|
||||
45.252.200.0/22
|
||||
45.252.204.0/22
|
||||
45.252.208.0/22
|
||||
45.252.212.0/22
|
||||
45.252.216.0/22
|
||||
45.252.220.0/22
|
||||
45.252.224.0/22
|
||||
45.253.0.0/22
|
||||
45.253.4.0/22
|
||||
45.253.8.0/22
|
||||
45.253.12.0/22
|
||||
45.253.16.0/22
|
||||
45.253.20.0/22
|
||||
45.253.28.0/22
|
||||
45.253.36.0/22
|
||||
45.253.40.0/22
|
||||
45.253.56.0/22
|
||||
45.253.76.0/22
|
||||
45.253.80.0/22
|
||||
45.253.84.0/22
|
||||
45.253.92.0/22
|
||||
45.254.28.0/22
|
||||
45.254.56.0/22
|
||||
45.254.96.0/22
|
||||
45.254.132.0/22
|
||||
45.254.152.0/22
|
||||
45.254.180.0/22
|
||||
45.254.200.0/22
|
||||
45.254.204.0/22
|
||||
45.254.208.0/22
|
||||
45.254.212.0/22
|
||||
45.254.216.0/22
|
||||
45.254.220.0/22
|
||||
45.254.224.0/22
|
||||
45.254.228.0/22
|
||||
49.220.0.0/14
|
||||
59.152.16.0/22
|
||||
59.152.20.0/22
|
||||
59.152.24.0/22
|
||||
59.152.28.0/22
|
||||
59.152.64.0/22
|
||||
59.152.68.0/22
|
||||
59.152.72.0/22
|
||||
59.152.76.0/22
|
||||
59.152.112.0/22
|
||||
59.152.116.0/22
|
||||
60.194.0.0/15
|
||||
60.206.0.0/15
|
||||
61.14.212.0/22
|
||||
61.14.216.0/22
|
||||
61.14.220.0/22
|
||||
101.38.0.0/15
|
||||
101.40.0.0/15
|
||||
101.104.0.0/14
|
||||
101.130.0.0/15
|
||||
103.23.56.0/22
|
||||
103.24.184.0/22
|
||||
103.38.0.0/22
|
||||
103.38.228.0/22
|
||||
103.38.232.0/22
|
||||
103.41.148.0/22
|
||||
103.41.152.0/22
|
||||
103.62.72.0/22
|
||||
103.62.76.0/22
|
||||
103.62.80.0/22
|
||||
103.62.84.0/22
|
||||
103.62.96.0/22
|
||||
103.62.100.0/22
|
||||
103.62.104.0/22
|
||||
103.62.108.0/22
|
||||
103.62.112.0/22
|
||||
103.62.116.0/22
|
||||
103.62.120.0/22
|
||||
103.62.124.0/22
|
||||
103.62.128.0/22
|
||||
103.62.132.0/22
|
||||
103.63.64.0/22
|
||||
103.63.68.0/22
|
||||
103.63.72.0/22
|
||||
103.63.76.0/22
|
||||
103.63.80.0/22
|
||||
103.63.84.0/22
|
||||
103.63.88.0/22
|
||||
103.63.140.0/22
|
||||
103.63.144.0/22
|
||||
103.63.152.0/22
|
||||
103.63.196.0/22
|
||||
103.63.200.0/22
|
||||
103.63.204.0/22
|
||||
103.63.208.0/22
|
||||
103.192.48.0/22
|
||||
103.192.52.0/22
|
||||
103.192.56.0/22
|
||||
103.192.84.0/22
|
||||
103.192.88.0/22
|
||||
103.192.92.0/22
|
||||
103.192.96.0/22
|
||||
103.192.100.0/22
|
||||
103.192.104.0/22
|
||||
103.192.108.0/22
|
||||
103.192.112.0/22
|
||||
103.192.216.0/22
|
||||
103.202.152.0/22
|
||||
103.202.156.0/22
|
||||
103.202.160.0/22
|
||||
103.202.164.0/22
|
||||
103.202.168.0/22
|
||||
103.202.172.0/22
|
||||
103.202.176.0/22
|
||||
103.202.180.0/22
|
||||
103.202.184.0/22
|
||||
103.202.188.0/22
|
||||
103.202.192.0/22
|
||||
103.202.196.0/22
|
||||
103.202.200.0/21
|
||||
103.202.228.0/22
|
||||
103.202.236.0/22
|
||||
103.202.240.0/22
|
||||
103.202.244.0/22
|
||||
103.202.248.0/22
|
||||
103.202.252.0/22
|
||||
103.203.0.0/22
|
||||
103.203.4.0/22
|
||||
103.203.8.0/22
|
||||
103.203.12.0/22
|
||||
103.203.16.0/22
|
||||
103.203.20.0/22
|
||||
103.203.24.0/22
|
||||
103.203.28.0/22
|
||||
103.203.32.0/22
|
||||
103.203.104.0/22
|
||||
103.203.108.0/22
|
||||
103.203.112.0/22
|
||||
103.203.116.0/22
|
||||
103.203.120.0/22
|
||||
103.203.124.0/22
|
||||
103.203.128.0/22
|
||||
103.204.88.0/22
|
||||
103.204.112.0/22
|
||||
103.204.148.0/22
|
||||
103.204.152.0/22
|
||||
103.221.88.0/22
|
||||
103.221.132.0/22
|
||||
103.221.156.0/22
|
||||
103.221.180.0/22
|
||||
103.221.184.0/22
|
||||
103.221.188.0/22
|
||||
103.221.192.0/22
|
||||
103.221.196.0/22
|
||||
103.222.0.0/22
|
||||
103.222.4.0/22
|
||||
103.222.8.0/22
|
||||
103.222.12.0/22
|
||||
103.222.16.0/22
|
||||
103.222.24.0/22
|
||||
103.222.28.0/22
|
||||
103.222.36.0/22
|
||||
103.222.44.0/22
|
||||
103.222.48.0/22
|
||||
103.222.56.0/22
|
||||
103.222.60.0/22
|
||||
103.222.64.0/22
|
||||
103.222.68.0/22
|
||||
103.222.72.0/22
|
||||
103.222.76.0/22
|
||||
103.222.80.0/22
|
||||
103.222.84.0/22
|
||||
103.222.88.0/22
|
||||
103.222.92.0/22
|
||||
103.222.96.0/22
|
||||
103.222.100.0/22
|
||||
103.222.104.0/22
|
||||
103.222.108.0/22
|
||||
103.222.200.0/22
|
||||
103.222.204.0/22
|
||||
103.222.208.0/22
|
||||
103.222.212.0/22
|
||||
103.238.20.0/22
|
||||
103.238.24.0/22
|
||||
103.238.40.0/22
|
||||
115.31.72.0/22
|
||||
115.31.76.0/22
|
||||
115.47.0.0/16
|
||||
115.182.0.0/16
|
||||
115.183.0.0/16
|
||||
115.187.0.0/22
|
||||
115.187.4.0/22
|
||||
115.187.8.0/22
|
||||
115.187.12.0/22
|
||||
115.190.0.0/15
|
||||
116.199.128.0/19
|
||||
117.58.0.0/17
|
||||
117.120.64.0/18
|
||||
118.28.0.0/15
|
||||
124.14.0.0/15
|
||||
124.192.0.0/15
|
||||
124.200.0.0/13
|
||||
124.254.0.0/18
|
||||
175.188.0.0/14
|
||||
180.88.0.0/14
|
||||
180.235.112.0/22
|
||||
202.4.252.0/22
|
||||
202.160.156.0/22
|
||||
202.168.136.0/22
|
||||
202.168.140.0/22
|
||||
203.78.156.0/22
|
||||
203.82.112.0/22
|
||||
203.82.116.0/22
|
||||
203.82.120.0/22
|
||||
203.82.124.0/22
|
||||
203.82.224.0/22
|
||||
203.82.228.0/22
|
||||
203.82.232.0/22
|
||||
203.82.236.0/22
|
||||
203.86.64.0/20
|
||||
203.114.80.0/22
|
||||
203.114.84.0/22
|
||||
203.114.88.0/22
|
||||
203.114.92.0/22
|
||||
203.207.92.0/22
|
||||
203.207.112.0/20
|
||||
203.207.192.0/21
|
||||
203.207.208.0/20
|
||||
211.101.0.0/18
|
||||
211.103.128.0/17
|
||||
211.164.0.0/14
|
||||
218.249.0.0/16
|
||||
219.90.68.0/22
|
||||
219.90.72.0/22
|
||||
219.90.76.0/22
|
||||
219.238.0.0/15
|
||||
220.112.0.0/14
|
||||
223.208.0.0/14
|
||||
223.255.0.0/17
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,887 @@
|
||||
1.24.0.0/13
|
||||
1.56.0.0/13
|
||||
1.188.0.0/14
|
||||
14.204.0.0/15
|
||||
27.0.128.0/22
|
||||
27.8.0.0/13
|
||||
27.36.0.0/14
|
||||
27.40.0.0/13
|
||||
27.50.128.0/17
|
||||
27.54.192.0/18
|
||||
27.98.224.0/19
|
||||
27.112.0.0/18
|
||||
27.115.0.0/17
|
||||
27.192.0.0/11
|
||||
36.32.0.0/14
|
||||
36.248.0.0/14
|
||||
39.64.0.0/11
|
||||
42.4.0.0/14
|
||||
42.48.0.0/15
|
||||
42.51.0.0/16
|
||||
42.52.0.0/14
|
||||
42.56.0.0/14
|
||||
42.63.0.0/16
|
||||
42.84.0.0/14
|
||||
42.176.0.0/13
|
||||
42.224.0.0/12
|
||||
43.224.12.0/22
|
||||
43.224.24.0/22
|
||||
43.224.52.0/22
|
||||
43.224.56.0/22
|
||||
43.224.80.0/22
|
||||
43.224.160.0/22
|
||||
43.224.208.0/22
|
||||
43.225.120.0/22
|
||||
43.226.80.0/22
|
||||
43.226.84.0/22
|
||||
43.226.88.0/22
|
||||
43.226.92.0/22
|
||||
43.226.96.0/22
|
||||
43.226.100.0/22
|
||||
43.226.104.0/22
|
||||
43.226.108.0/22
|
||||
43.226.116.0/22
|
||||
43.226.120.0/22
|
||||
43.226.160.0/22
|
||||
43.226.164.0/22
|
||||
43.226.236.0/22
|
||||
43.227.104.0/22
|
||||
43.229.168.0/22
|
||||
43.229.172.0/22
|
||||
43.229.176.0/22
|
||||
43.229.180.0/22
|
||||
43.229.236.0/22
|
||||
43.239.120.0/22
|
||||
43.240.0.0/22
|
||||
43.240.72.0/22
|
||||
43.240.132.0/22
|
||||
43.240.204.0/22
|
||||
43.240.216.0/22
|
||||
43.241.48.0/22
|
||||
43.241.92.0/22
|
||||
43.241.184.0/22
|
||||
43.242.64.0/22
|
||||
43.242.148.0/22
|
||||
43.242.152.0/22
|
||||
43.242.156.0/22
|
||||
43.242.164.0/22
|
||||
43.242.180.0/22
|
||||
43.243.4.0/22
|
||||
43.243.16.0/22
|
||||
43.243.88.0/22
|
||||
43.243.128.0/22
|
||||
43.243.156.0/22
|
||||
43.243.180.0/22
|
||||
43.243.228.0/22
|
||||
43.246.112.0/22
|
||||
43.246.228.0/22
|
||||
43.247.88.0/22
|
||||
43.247.92.0/22
|
||||
43.247.100.0/22
|
||||
43.247.212.0/22
|
||||
43.247.216.0/22
|
||||
43.248.4.0/22
|
||||
43.248.20.0/22
|
||||
43.248.48.0/22
|
||||
43.248.80.0/22
|
||||
43.248.84.0/22
|
||||
43.248.88.0/22
|
||||
43.248.92.0/22
|
||||
43.248.108.0/22
|
||||
43.248.148.0/22
|
||||
43.248.176.0/22
|
||||
43.248.180.0/22
|
||||
43.248.184.0/22
|
||||
43.248.188.0/22
|
||||
43.248.192.0/22
|
||||
43.248.196.0/22
|
||||
43.248.200.0/22
|
||||
43.248.204.0/22
|
||||
43.248.244.0/22
|
||||
43.249.4.0/22
|
||||
43.249.136.0/22
|
||||
43.249.192.0/22
|
||||
43.249.236.0/22
|
||||
43.250.4.0/22
|
||||
43.250.96.0/22
|
||||
43.250.112.0/22
|
||||
43.250.128.0/22
|
||||
43.250.144.0/22
|
||||
43.250.168.0/22
|
||||
43.250.200.0/22
|
||||
43.250.212.0/22
|
||||
43.250.244.0/22
|
||||
43.251.4.0/22
|
||||
43.251.36.0/22
|
||||
43.251.232.0/22
|
||||
43.254.44.0/22
|
||||
43.254.100.0/22
|
||||
43.254.104.0/22
|
||||
43.254.116.0/22
|
||||
43.254.136.0/22
|
||||
43.254.144.0/22
|
||||
43.254.148.0/22
|
||||
43.254.220.0/22
|
||||
43.255.84.0/22
|
||||
43.255.204.0/22
|
||||
43.255.244.0/22
|
||||
45.112.228.0/22
|
||||
45.112.232.0/22
|
||||
45.113.24.0/22
|
||||
45.113.28.0/22
|
||||
45.113.200.0/22
|
||||
45.113.240.0/22
|
||||
45.113.252.0/22
|
||||
45.115.144.0/22
|
||||
45.115.156.0/22
|
||||
45.115.164.0/22
|
||||
45.115.200.0/22
|
||||
45.115.248.0/22
|
||||
45.117.8.0/22
|
||||
45.117.124.0/22
|
||||
45.119.64.0/22
|
||||
45.119.68.0/22
|
||||
45.120.100.0/22
|
||||
45.121.52.0/22
|
||||
45.123.156.0/22
|
||||
45.124.20.0/22
|
||||
45.124.68.0/22
|
||||
45.124.80.0/22
|
||||
45.125.44.0/22
|
||||
45.126.108.0/22
|
||||
45.248.8.0/22
|
||||
45.248.96.0/22
|
||||
45.249.112.0/22
|
||||
45.250.28.0/22
|
||||
45.250.32.0/22
|
||||
45.250.36.0/22
|
||||
45.250.40.0/22
|
||||
45.251.16.0/22
|
||||
45.251.84.0/22
|
||||
45.251.88.0/22
|
||||
45.252.104.0/22
|
||||
45.253.24.0/22
|
||||
45.253.32.0/22
|
||||
45.253.64.0/22
|
||||
58.16.0.0/16
|
||||
58.17.0.0/17
|
||||
58.17.128.0/17
|
||||
58.18.0.0/16
|
||||
58.19.0.0/16
|
||||
58.20.0.0/16
|
||||
58.21.0.0/16
|
||||
58.22.0.0/15
|
||||
58.144.0.0/16
|
||||
58.240.0.0/15
|
||||
58.242.0.0/15
|
||||
58.244.0.0/15
|
||||
58.246.0.0/15
|
||||
58.248.0.0/13
|
||||
59.80.0.0/15
|
||||
60.0.0.0/13
|
||||
60.8.0.0/15
|
||||
60.10.0.0/16
|
||||
60.11.0.0/16
|
||||
60.12.0.0/16
|
||||
60.13.0.0/18
|
||||
60.13.64.0/18
|
||||
60.13.128.0/17
|
||||
60.14.0.0/15
|
||||
60.16.0.0/13
|
||||
60.24.0.0/14
|
||||
60.28.0.0/15
|
||||
60.30.0.0/16
|
||||
60.31.0.0/16
|
||||
60.208.0.0/13
|
||||
60.216.0.0/15
|
||||
60.218.0.0/15
|
||||
60.220.0.0/14
|
||||
60.255.0.0/16
|
||||
61.45.128.0/18
|
||||
61.48.0.0/14
|
||||
61.52.0.0/15
|
||||
61.54.0.0/16
|
||||
61.55.0.0/16
|
||||
61.133.0.0/17
|
||||
61.134.96.0/19
|
||||
61.134.128.0/18
|
||||
61.134.192.0/18
|
||||
61.135.0.0/16
|
||||
61.136.0.0/18
|
||||
61.136.64.0/18
|
||||
61.137.128.0/17
|
||||
61.138.0.0/18
|
||||
61.138.64.0/18
|
||||
61.138.128.0/18
|
||||
61.139.128.0/18
|
||||
61.148.0.0/15
|
||||
61.156.0.0/16
|
||||
61.158.0.0/17
|
||||
61.158.128.0/17
|
||||
61.159.0.0/18
|
||||
61.161.0.0/18
|
||||
61.161.128.0/17
|
||||
61.162.0.0/16
|
||||
61.163.0.0/16
|
||||
61.167.0.0/16
|
||||
61.168.0.0/16
|
||||
61.176.0.0/16
|
||||
61.179.0.0/16
|
||||
61.180.128.0/17
|
||||
61.181.0.0/16
|
||||
61.182.0.0/16
|
||||
61.189.0.0/17
|
||||
61.240.0.0/14
|
||||
101.16.0.0/12
|
||||
101.64.0.0/13
|
||||
101.72.0.0/14
|
||||
101.204.0.0/14
|
||||
101.232.0.0/15
|
||||
103.3.96.0/22
|
||||
103.3.100.0/22
|
||||
103.3.104.0/22
|
||||
103.3.108.0/22
|
||||
103.3.112.0/22
|
||||
103.3.116.0/22
|
||||
103.3.120.0/22
|
||||
103.3.124.0/22
|
||||
103.3.132.0/22
|
||||
103.3.136.0/22
|
||||
103.3.140.0/22
|
||||
103.3.148.0/22
|
||||
103.3.152.0/22
|
||||
103.3.156.0/22
|
||||
103.5.56.0/22
|
||||
103.5.168.0/22
|
||||
103.5.252.0/22
|
||||
103.7.212.0/22
|
||||
103.8.32.0/22
|
||||
103.9.248.0/22
|
||||
103.9.252.0/22
|
||||
103.14.84.0/22
|
||||
103.18.224.0/22
|
||||
103.22.188.0/22
|
||||
103.25.40.0/22
|
||||
103.27.4.0/22
|
||||
103.27.240.0/22
|
||||
103.28.204.0/22
|
||||
103.31.200.0/22
|
||||
103.35.220.0/22
|
||||
103.36.208.0/22
|
||||
103.37.44.0/22
|
||||
103.37.100.0/22
|
||||
103.38.32.0/22
|
||||
103.38.40.0/22
|
||||
103.39.88.0/22
|
||||
103.40.12.0/22
|
||||
103.40.192.0/22
|
||||
103.40.212.0/22
|
||||
103.43.100.0/22
|
||||
103.43.192.0/22
|
||||
103.44.80.0/22
|
||||
103.45.72.0/22
|
||||
103.45.76.0/22
|
||||
103.45.160.0/22
|
||||
103.45.168.0/22
|
||||
103.45.224.0/22
|
||||
103.48.216.0/22
|
||||
103.48.220.0/22
|
||||
103.48.224.0/22
|
||||
103.48.228.0/22
|
||||
103.48.232.0/22
|
||||
103.52.96.0/22
|
||||
103.52.100.0/22
|
||||
103.52.176.0/22
|
||||
103.52.184.0/22
|
||||
103.53.124.0/22
|
||||
103.53.204.0/22
|
||||
103.55.172.0/22
|
||||
103.55.204.0/22
|
||||
103.55.208.0/22
|
||||
103.55.228.0/22
|
||||
103.56.32.0/22
|
||||
103.56.60.0/22
|
||||
103.57.196.0/22
|
||||
103.59.116.0/22
|
||||
103.59.124.0/22
|
||||
103.60.164.0/22
|
||||
103.67.192.0/22
|
||||
103.68.128.0/22
|
||||
103.70.148.0/22
|
||||
103.72.224.0/22
|
||||
103.72.228.0/22
|
||||
103.72.232.0/22
|
||||
103.72.236.0/22
|
||||
103.72.240.0/22
|
||||
103.72.244.0/22
|
||||
103.72.248.0/22
|
||||
103.72.252.0/22
|
||||
103.73.0.0/22
|
||||
103.73.4.0/22
|
||||
103.73.8.0/22
|
||||
103.73.12.0/22
|
||||
103.73.16.0/22
|
||||
103.73.20.0/22
|
||||
103.73.24.0/22
|
||||
103.73.28.0/22
|
||||
103.73.144.0/22
|
||||
103.78.64.0/22
|
||||
103.79.228.0/23
|
||||
103.85.84.0/22
|
||||
103.90.92.0/22
|
||||
103.90.188.0/22
|
||||
103.91.108.0/22
|
||||
103.91.176.0/22
|
||||
103.91.208.0/22
|
||||
103.91.252.0/22
|
||||
103.92.0.0/22
|
||||
103.92.4.0/22
|
||||
103.92.8.0/22
|
||||
103.92.12.0/22
|
||||
103.92.48.0/22
|
||||
103.92.132.0/22
|
||||
103.93.180.0/22
|
||||
103.95.220.0/22
|
||||
103.97.8.0/22
|
||||
103.97.16.0/20
|
||||
103.97.72.0/22
|
||||
103.98.44.0/22
|
||||
103.98.168.0/22
|
||||
103.98.220.0/22
|
||||
103.107.44.0/22
|
||||
103.107.188.0/22
|
||||
103.107.212.0/22
|
||||
103.108.244.0/22
|
||||
103.110.132.0/22
|
||||
103.110.156.0/22
|
||||
103.117.188.0/22
|
||||
103.120.224.0/22
|
||||
103.123.56.0/22
|
||||
103.141.242.0/23
|
||||
103.142.128.0/23
|
||||
103.158.8.0/23
|
||||
103.166.138.0/23
|
||||
103.192.4.0/22
|
||||
103.192.132.0/22
|
||||
103.192.188.0/22
|
||||
103.192.212.0/22
|
||||
103.197.0.0/22
|
||||
103.203.168.0/22
|
||||
103.204.72.0/22
|
||||
103.204.136.0/22
|
||||
103.205.4.0/22
|
||||
103.205.192.0/22
|
||||
103.205.252.0/22
|
||||
103.207.184.0/22
|
||||
103.207.228.0/22
|
||||
103.207.232.0/22
|
||||
103.210.184.0/22
|
||||
103.211.44.0/22
|
||||
103.211.96.0/22
|
||||
103.211.220.0/22
|
||||
103.213.96.0/22
|
||||
103.213.132.0/22
|
||||
103.214.48.0/22
|
||||
103.215.36.0/22
|
||||
103.216.152.0/22
|
||||
103.216.240.0/22
|
||||
103.219.24.0/22
|
||||
103.219.28.0/22
|
||||
103.219.32.0/22
|
||||
103.219.36.0/22
|
||||
103.220.48.0/22
|
||||
103.220.52.0/22
|
||||
103.221.140.0/22
|
||||
103.222.32.0/22
|
||||
103.222.40.0/22
|
||||
103.222.164.0/22
|
||||
103.222.172.0/22
|
||||
103.223.140.0/22
|
||||
103.223.188.0/22
|
||||
103.224.228.0/22
|
||||
103.224.232.0/22
|
||||
103.227.120.0/22
|
||||
103.227.136.0/22
|
||||
103.228.204.0/22
|
||||
103.229.148.0/22
|
||||
103.229.212.0/22
|
||||
103.230.196.0/22
|
||||
103.230.236.0/22
|
||||
103.233.228.0/22
|
||||
103.234.56.0/22
|
||||
103.234.244.0/22
|
||||
103.236.120.0/22
|
||||
103.236.240.0/22
|
||||
103.238.28.0/22
|
||||
103.238.32.0/22
|
||||
103.238.144.0/22
|
||||
103.238.160.0/22
|
||||
103.239.152.0/22
|
||||
103.239.224.0/22
|
||||
103.239.244.0/22
|
||||
103.240.36.0/22
|
||||
103.240.72.0/22
|
||||
103.240.84.0/22
|
||||
103.240.124.0/22
|
||||
103.240.172.0/22
|
||||
103.243.136.0/22
|
||||
103.246.8.0/22
|
||||
103.246.152.0/22
|
||||
103.248.100.0/22
|
||||
103.250.32.0/22
|
||||
103.250.104.0/22
|
||||
103.250.124.0/22
|
||||
103.250.180.0/22
|
||||
103.250.192.0/22
|
||||
103.250.216.0/22
|
||||
103.250.248.0/22
|
||||
103.251.32.0/22
|
||||
103.251.96.0/22
|
||||
103.251.124.0/22
|
||||
103.251.160.0/22
|
||||
103.251.240.0/22
|
||||
103.252.204.0/22
|
||||
103.252.208.0/22
|
||||
103.252.232.0/22
|
||||
103.252.248.0/22
|
||||
103.253.60.0/22
|
||||
103.255.88.0/22
|
||||
103.255.200.0/22
|
||||
106.48.0.0/15
|
||||
106.74.0.0/16
|
||||
110.6.0.0/15
|
||||
110.16.0.0/14
|
||||
110.44.12.0/22
|
||||
110.52.0.0/15
|
||||
110.72.0.0/15
|
||||
110.228.0.0/14
|
||||
110.236.0.0/15
|
||||
110.240.0.0/12
|
||||
111.85.0.0/16
|
||||
111.160.0.0/13
|
||||
111.192.0.0/12
|
||||
111.223.12.0/22
|
||||
112.64.0.0/15
|
||||
112.80.0.0/13
|
||||
112.88.0.0/13
|
||||
112.96.0.0/15
|
||||
112.109.128.0/17
|
||||
112.111.0.0/16
|
||||
112.122.0.0/15
|
||||
112.132.0.0/16
|
||||
112.192.0.0/14
|
||||
112.224.0.0/11
|
||||
113.0.0.0/13
|
||||
113.8.0.0/15
|
||||
113.18.0.0/16
|
||||
113.56.0.0/15
|
||||
113.58.0.0/16
|
||||
113.59.0.0/17
|
||||
113.194.0.0/15
|
||||
113.200.0.0/15
|
||||
113.204.0.0/14
|
||||
113.213.0.0/17
|
||||
113.224.0.0/12
|
||||
114.54.0.0/15
|
||||
114.119.0.0/17
|
||||
114.119.224.0/19
|
||||
114.240.0.0/12
|
||||
115.46.0.0/16
|
||||
115.48.0.0/12
|
||||
115.85.192.0/18
|
||||
115.172.0.0/14
|
||||
116.2.0.0/15
|
||||
116.60.0.0/14
|
||||
116.78.0.0/15
|
||||
116.95.0.0/16
|
||||
116.112.0.0/14
|
||||
116.116.0.0/15
|
||||
116.128.0.0/10
|
||||
116.194.0.0/15
|
||||
116.199.0.0/17
|
||||
116.214.32.0/19
|
||||
116.216.0.0/14
|
||||
116.242.0.0/15
|
||||
116.244.0.0/15
|
||||
116.255.128.0/17
|
||||
117.8.0.0/13
|
||||
117.74.64.0/20
|
||||
117.121.128.0/18
|
||||
118.26.48.0/21
|
||||
118.72.0.0/13
|
||||
118.80.0.0/15
|
||||
118.88.32.0/19
|
||||
118.88.64.0/18
|
||||
118.88.128.0/17
|
||||
118.103.168.0/22
|
||||
118.144.0.0/14
|
||||
118.212.0.0/16
|
||||
118.224.0.0/14
|
||||
118.244.0.0/14
|
||||
119.4.0.0/14
|
||||
119.27.64.0/18
|
||||
119.32.0.0/14
|
||||
119.36.0.0/16
|
||||
119.37.0.0/17
|
||||
119.37.128.0/18
|
||||
119.38.0.0/17
|
||||
119.39.0.0/16
|
||||
119.40.128.0/17
|
||||
119.42.0.0/19
|
||||
119.42.224.0/19
|
||||
119.44.0.0/15
|
||||
119.48.0.0/13
|
||||
119.59.128.0/17
|
||||
119.62.0.0/16
|
||||
119.108.0.0/15
|
||||
119.112.0.0/13
|
||||
119.148.160.0/20
|
||||
119.162.0.0/15
|
||||
119.164.0.0/14
|
||||
119.176.0.0/12
|
||||
119.233.128.0/17
|
||||
119.248.0.0/14
|
||||
119.252.240.0/20
|
||||
120.0.0.0/12
|
||||
120.52.0.0/16
|
||||
120.72.32.0/19
|
||||
120.80.0.0/13
|
||||
120.128.0.0/14
|
||||
121.16.0.0/13
|
||||
121.24.0.0/14
|
||||
121.28.0.0/15
|
||||
121.30.0.0/16
|
||||
121.31.0.0/16
|
||||
121.52.224.0/19
|
||||
121.55.0.0/18
|
||||
121.100.128.0/17
|
||||
121.201.0.0/16
|
||||
122.13.0.0/16
|
||||
122.96.0.0/15
|
||||
122.102.64.0/20
|
||||
122.136.0.0/13
|
||||
122.156.0.0/14
|
||||
122.188.0.0/14
|
||||
122.192.0.0/14
|
||||
123.4.0.0/14
|
||||
123.8.0.0/13
|
||||
123.58.240.0/20
|
||||
123.98.0.0/17
|
||||
123.112.0.0/12
|
||||
123.128.0.0/13
|
||||
123.138.0.0/15
|
||||
123.144.0.0/14
|
||||
123.148.0.0/16
|
||||
123.152.0.0/13
|
||||
123.176.80.0/20
|
||||
123.188.0.0/14
|
||||
123.196.0.0/15
|
||||
123.232.0.0/14
|
||||
124.6.64.0/18
|
||||
124.20.0.0/16
|
||||
124.21.0.0/20
|
||||
124.21.16.0/20
|
||||
124.21.32.0/19
|
||||
124.21.64.0/18
|
||||
124.21.128.0/17
|
||||
124.42.128.0/17
|
||||
124.64.0.0/15
|
||||
124.66.0.0/17
|
||||
124.67.0.0/16
|
||||
124.68.0.0/15
|
||||
124.88.0.0/16
|
||||
124.89.0.0/17
|
||||
124.89.128.0/17
|
||||
124.90.0.0/15
|
||||
124.92.0.0/14
|
||||
124.128.0.0/13
|
||||
124.152.0.0/16
|
||||
124.160.0.0/16
|
||||
124.161.0.0/16
|
||||
124.162.0.0/16
|
||||
124.163.0.0/16
|
||||
124.164.0.0/14
|
||||
124.240.128.0/18
|
||||
125.32.0.0/16
|
||||
125.33.0.0/16
|
||||
125.34.0.0/16
|
||||
125.35.0.0/17
|
||||
125.35.128.0/17
|
||||
125.36.0.0/14
|
||||
125.40.0.0/13
|
||||
125.211.0.0/16
|
||||
125.214.96.0/19
|
||||
139.170.0.0/16
|
||||
139.208.0.0/13
|
||||
139.226.0.0/15
|
||||
140.206.0.0/15
|
||||
144.48.64.0/22
|
||||
146.196.56.0/22
|
||||
146.196.68.0/22
|
||||
150.129.136.0/22
|
||||
150.242.8.0/22
|
||||
150.242.152.0/22
|
||||
150.242.232.0/22
|
||||
150.255.0.0/16
|
||||
153.0.0.0/16
|
||||
153.3.0.0/16
|
||||
153.34.0.0/15
|
||||
153.36.0.0/15
|
||||
153.99.0.0/16
|
||||
153.101.0.0/16
|
||||
157.0.0.0/16
|
||||
157.18.0.0/16
|
||||
157.61.0.0/16
|
||||
157.122.0.0/16
|
||||
157.148.0.0/16
|
||||
157.156.0.0/16
|
||||
157.255.0.0/16
|
||||
160.19.212.0/22
|
||||
160.202.60.0/22
|
||||
160.202.148.0/22
|
||||
160.202.152.0/22
|
||||
160.202.212.0/22
|
||||
163.0.0.0/16
|
||||
163.53.48.0/22
|
||||
163.53.52.0/22
|
||||
163.53.168.0/22
|
||||
163.125.0.0/16
|
||||
163.142.0.0/16
|
||||
163.177.0.0/16
|
||||
163.179.0.0/16
|
||||
163.204.0.0/16
|
||||
171.34.0.0/15
|
||||
171.36.0.0/14
|
||||
171.116.0.0/14
|
||||
171.120.0.0/13
|
||||
175.16.0.0/13
|
||||
175.42.0.0/15
|
||||
175.44.0.0/16
|
||||
175.106.128.0/17
|
||||
175.146.0.0/15
|
||||
175.148.0.0/14
|
||||
175.152.0.0/14
|
||||
175.160.0.0/12
|
||||
175.184.128.0/18
|
||||
180.77.0.0/16
|
||||
180.95.128.0/17
|
||||
180.129.128.0/17
|
||||
180.130.0.0/16
|
||||
180.188.0.0/17
|
||||
180.189.148.0/22
|
||||
182.54.0.0/17
|
||||
182.88.0.0/14
|
||||
182.112.0.0/12
|
||||
182.174.0.0/15
|
||||
183.92.0.0/14
|
||||
183.184.0.0/13
|
||||
192.140.208.0/22
|
||||
192.140.212.0/22
|
||||
202.74.8.0/21
|
||||
202.75.208.0/20
|
||||
202.89.96.0/22
|
||||
202.96.0.0/18
|
||||
202.96.64.0/21
|
||||
202.96.72.0/21
|
||||
202.96.80.0/20
|
||||
202.97.128.0/18
|
||||
202.97.192.0/19
|
||||
202.97.224.0/21
|
||||
202.97.232.0/21
|
||||
202.97.240.0/20
|
||||
202.98.0.0/21
|
||||
202.98.8.0/21
|
||||
202.98.16.0/20
|
||||
202.99.0.0/18
|
||||
202.99.64.0/19
|
||||
202.99.96.0/21
|
||||
202.99.104.0/21
|
||||
202.99.112.0/20
|
||||
202.99.128.0/19
|
||||
202.99.160.0/21
|
||||
202.99.168.0/21
|
||||
202.99.176.0/20
|
||||
202.99.192.0/21
|
||||
202.99.200.0/21
|
||||
202.99.208.0/20
|
||||
202.99.224.0/21
|
||||
202.99.232.0/21
|
||||
202.99.240.0/20
|
||||
202.101.128.0/18
|
||||
202.102.128.0/21
|
||||
202.102.136.0/21
|
||||
202.102.144.0/20
|
||||
202.102.160.0/19
|
||||
202.102.224.0/21
|
||||
202.102.232.0/21
|
||||
202.102.240.0/20
|
||||
202.106.0.0/16
|
||||
202.107.0.0/17
|
||||
202.108.0.0/16
|
||||
202.110.0.0/18
|
||||
202.110.64.0/18
|
||||
202.110.192.0/18
|
||||
202.111.128.0/19
|
||||
202.111.160.0/19
|
||||
202.127.112.0/20
|
||||
202.130.224.0/19
|
||||
202.160.140.0/22
|
||||
202.170.128.0/19
|
||||
203.76.240.0/22
|
||||
203.93.0.0/22
|
||||
203.93.4.0/22
|
||||
203.93.8.0/24
|
||||
203.93.9.0/24
|
||||
203.93.10.0/23
|
||||
203.93.12.0/22
|
||||
203.93.16.0/20
|
||||
203.93.32.0/19
|
||||
203.93.64.0/18
|
||||
203.93.128.0/21
|
||||
203.93.136.0/22
|
||||
203.93.140.0/24
|
||||
203.93.141.0/24
|
||||
203.93.142.0/23
|
||||
203.93.144.0/20
|
||||
203.93.160.0/19
|
||||
203.93.192.0/18
|
||||
203.166.160.0/19
|
||||
210.5.128.0/20
|
||||
210.12.0.0/18
|
||||
210.12.64.0/18
|
||||
210.12.128.0/18
|
||||
210.12.192.0/18
|
||||
210.13.0.0/18
|
||||
210.13.64.0/18
|
||||
210.13.128.0/17
|
||||
210.14.160.0/19
|
||||
210.14.192.0/19
|
||||
210.14.224.0/19
|
||||
210.15.0.0/19
|
||||
210.15.32.0/19
|
||||
210.15.64.0/19
|
||||
210.15.96.0/19
|
||||
210.15.128.0/18
|
||||
210.21.0.0/17
|
||||
210.21.128.0/17
|
||||
210.22.0.0/16
|
||||
210.51.0.0/16
|
||||
210.52.0.0/18
|
||||
210.52.64.0/18
|
||||
210.52.128.0/17
|
||||
210.53.0.0/17
|
||||
210.53.128.0/17
|
||||
210.74.64.0/19
|
||||
210.74.96.0/19
|
||||
210.74.128.0/19
|
||||
210.78.0.0/19
|
||||
210.78.160.0/19
|
||||
210.78.192.0/18
|
||||
210.79.64.0/18
|
||||
210.82.0.0/15
|
||||
211.90.0.0/15
|
||||
211.92.0.0/15
|
||||
211.94.0.0/15
|
||||
211.96.0.0/15
|
||||
211.144.0.0/15
|
||||
211.158.0.0/15
|
||||
218.7.0.0/16
|
||||
218.8.0.0/15
|
||||
218.10.0.0/16
|
||||
218.11.0.0/16
|
||||
218.12.0.0/16
|
||||
218.21.128.0/17
|
||||
218.24.0.0/15
|
||||
218.26.0.0/16
|
||||
218.27.0.0/16
|
||||
218.28.0.0/15
|
||||
218.56.0.0/14
|
||||
218.60.0.0/15
|
||||
218.62.0.0/17
|
||||
218.67.128.0/17
|
||||
218.68.0.0/15
|
||||
218.98.0.0/17
|
||||
218.104.0.0/17
|
||||
218.104.128.0/19
|
||||
218.104.160.0/19
|
||||
218.104.192.0/21
|
||||
218.104.200.0/21
|
||||
218.104.208.0/20
|
||||
218.104.224.0/19
|
||||
218.105.0.0/16
|
||||
218.106.0.0/15
|
||||
219.154.0.0/15
|
||||
219.156.0.0/15
|
||||
219.158.0.0/17
|
||||
219.158.128.0/17
|
||||
219.159.0.0/18
|
||||
219.232.0.0/14
|
||||
220.152.128.0/17
|
||||
220.158.240.0/22
|
||||
220.192.0.0/15
|
||||
220.194.0.0/15
|
||||
220.196.0.0/14
|
||||
220.200.0.0/13
|
||||
220.231.0.0/18
|
||||
220.248.0.0/14
|
||||
220.252.0.0/16
|
||||
221.0.0.0/15
|
||||
221.2.0.0/16
|
||||
221.3.0.0/17
|
||||
221.3.128.0/17
|
||||
221.4.0.0/16
|
||||
221.5.0.0/17
|
||||
221.5.128.0/17
|
||||
221.6.0.0/16
|
||||
221.7.0.0/19
|
||||
221.7.32.0/19
|
||||
221.7.64.0/19
|
||||
221.7.96.0/19
|
||||
221.7.128.0/17
|
||||
221.8.0.0/15
|
||||
221.10.0.0/16
|
||||
221.11.0.0/17
|
||||
221.11.128.0/18
|
||||
221.11.192.0/19
|
||||
221.11.224.0/19
|
||||
221.12.0.0/17
|
||||
221.12.128.0/18
|
||||
221.13.0.0/18
|
||||
221.13.64.0/19
|
||||
221.13.96.0/19
|
||||
221.13.128.0/17
|
||||
221.14.0.0/15
|
||||
221.192.0.0/15
|
||||
221.194.0.0/16
|
||||
221.195.0.0/16
|
||||
221.196.0.0/15
|
||||
221.198.0.0/16
|
||||
221.199.0.0/19
|
||||
221.199.32.0/20
|
||||
221.199.48.0/20
|
||||
221.199.64.0/18
|
||||
221.199.128.0/18
|
||||
221.199.192.0/20
|
||||
221.199.224.0/19
|
||||
221.200.0.0/14
|
||||
221.204.0.0/15
|
||||
221.206.0.0/16
|
||||
221.207.0.0/18
|
||||
221.207.64.0/18
|
||||
221.207.128.0/17
|
||||
221.208.0.0/14
|
||||
221.212.0.0/16
|
||||
221.213.0.0/16
|
||||
221.214.0.0/15
|
||||
221.216.0.0/13
|
||||
222.128.0.0/14
|
||||
222.132.0.0/14
|
||||
222.136.0.0/13
|
||||
222.160.0.0/15
|
||||
222.162.0.0/16
|
||||
222.163.0.0/19
|
||||
222.163.32.0/19
|
||||
222.163.64.0/18
|
||||
222.163.128.0/17
|
||||
223.27.184.0/22
|
||||
223.166.0.0/15
|
@ -0,0 +1,11 @@
|
||||
#!/bin/sh
|
||||
|
||||
uci -q batch <<-EOF >/dev/null
|
||||
delete ucitrack.@mwan3helper[-1]
|
||||
add ucitrack mwan3helper
|
||||
set ucitrack.@mwan3helper[-1].init=mwan3helper
|
||||
commit ucitrack
|
||||
EOF
|
||||
|
||||
rm -f /tmp/luci*
|
||||
exit 0
|
@ -0,0 +1,11 @@
|
||||
{
|
||||
"luci-app-mwan3helper": {
|
||||
"description": "Grant UCI access for luci-app-mwan3helper",
|
||||
"read": {
|
||||
"uci": [ "mwan3helper" ]
|
||||
},
|
||||
"write": {
|
||||
"uci": [ "mwan3helper" ]
|
||||
}
|
||||
}
|
||||
}
|
16
package/mtk/applications/luci-app-turboacc-mtk/Makefile
Normal file
16
package/mtk/applications/luci-app-turboacc-mtk/Makefile
Normal file
@ -0,0 +1,16 @@
|
||||
# SPDX-Identifier-License: GPL-3.0-only
|
||||
#
|
||||
# Copyright (C) 2018 Lean <coolsnowwolf@gmail.com>
|
||||
# Copyright (C) 2019-2022 ImmortalWrt.org
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_LICENSE:=GPL-3.0-only
|
||||
|
||||
LUCI_TITLE:=LuCI support for MTK HNAT
|
||||
LUCI_DEPENDS:=+kmod-tcp-bbr @!PACKAGE_luci-app-turboacc
|
||||
LUCI_PKGARCH:=all
|
||||
|
||||
include $(TOPDIR)/feeds/luci/luci.mk
|
||||
|
||||
# call BuildPackage - OpenWrt buildroot signature
|
@ -0,0 +1,258 @@
|
||||
/* Copyright (C) 2022 ImmortalWrt.org */
|
||||
|
||||
'use strict';
|
||||
'require form';
|
||||
'require fs';
|
||||
'require poll';
|
||||
'require rpc';
|
||||
'require uci';
|
||||
'require view';
|
||||
|
||||
var getSystemFeatures = rpc.declare({
|
||||
object: 'luci.turboacc',
|
||||
method: 'getSystemFeatures',
|
||||
expect: { '': {} }
|
||||
});
|
||||
|
||||
var getFastPathStat = rpc.declare({
|
||||
object: 'luci.turboacc',
|
||||
method: 'getFastPathStat',
|
||||
expect: { '': {} }
|
||||
});
|
||||
|
||||
var getFullConeStat = rpc.declare({
|
||||
object: 'luci.turboacc',
|
||||
method: 'getFullConeStat',
|
||||
expect: { '': {} }
|
||||
});
|
||||
|
||||
var getTCPCCAStat = rpc.declare({
|
||||
object: 'luci.turboacc',
|
||||
method: 'getTCPCCAStat',
|
||||
expect: { '': {} }
|
||||
});
|
||||
|
||||
var getMTKPPEStat = rpc.declare({
|
||||
object: 'luci.turboacc',
|
||||
method: 'getMTKPPEStat',
|
||||
expect: { '': {} }
|
||||
});
|
||||
|
||||
function getServiceStatus() {
|
||||
return Promise.all([
|
||||
L.resolveDefault(getFastPathStat(), {}),
|
||||
L.resolveDefault(getFullConeStat(), {}),
|
||||
L.resolveDefault(getTCPCCAStat(), {})
|
||||
]);
|
||||
}
|
||||
|
||||
function getMTKPPEStatus() {
|
||||
return Promise.all([
|
||||
L.resolveDefault(getMTKPPEStat(), {})
|
||||
]);
|
||||
}
|
||||
|
||||
function progressbar(value, max, byte) {
|
||||
var vn = parseInt(value) || 0,
|
||||
mn = parseInt(max) || 100,
|
||||
fv = byte ? String.format('%1024.2mB', value) : value,
|
||||
fm = byte ? String.format('%1024.2mB', max) : max,
|
||||
pc = Math.floor((100 / mn) * vn);
|
||||
|
||||
return E('div', {
|
||||
'class': 'cbi-progressbar',
|
||||
'title': '%s / %s (%d%%)'.format(fv, fm, pc)
|
||||
}, E('div', { 'style': 'width:%.2f%%'.format(pc) }));
|
||||
}
|
||||
|
||||
function renderStatus(stats) {
|
||||
var spanTemp = '<em><span style="color:%s"><strong>%s</strong></span></em>';
|
||||
var renderHTML = [];
|
||||
for (var stat of stats)
|
||||
if (stat.type) {
|
||||
if (stat.type.includes(' / ')) {
|
||||
var types = stat.type.split(' / ');
|
||||
var inner = spanTemp.format('green', types[0]);
|
||||
for (var i of types.slice(1))
|
||||
inner += spanTemp.format('none', ' / ') + spanTemp.format('red', i);
|
||||
renderHTML.push(inner);
|
||||
} else
|
||||
renderHTML.push(spanTemp.format('green', stat.type));
|
||||
} else
|
||||
renderHTML.push(spanTemp.format('red', _('Disabled')));
|
||||
return renderHTML;
|
||||
}
|
||||
|
||||
return view.extend({
|
||||
load: function() {
|
||||
return Promise.all([
|
||||
uci.load('turboacc'),
|
||||
L.resolveDefault(getSystemFeatures(), {}),
|
||||
L.resolveDefault(getMTKPPEStat(), {})
|
||||
]);
|
||||
},
|
||||
|
||||
render: function(data) {
|
||||
var m, s, o;
|
||||
var features = data[1];
|
||||
var ppe_stats = data[2];
|
||||
|
||||
m = new form.Map('turboacc', _('TurboACC settings'),
|
||||
_('Open source flow offloading engine (fast path or hardware NAT).'));
|
||||
|
||||
s = m.section(form.TypedSection);
|
||||
s.anonymous = true;
|
||||
s.render = function () {
|
||||
poll.add(function () {
|
||||
return L.resolveDefault(getServiceStatus()).then(function (res) {
|
||||
var stats = renderStatus(res);
|
||||
var tds = [ 'fastpath_state', 'fullcone_state', 'tcpcca_state' ];
|
||||
for (var i in tds) {
|
||||
var view = document.getElementById(tds[i]);
|
||||
view.innerHTML = stats[i];
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
var acc_status = E('table', { 'class': 'table', 'width': '100%', 'cellspacing': '10' }, [
|
||||
E('tr', {}, [
|
||||
E('td', { 'width': '33%' }, _('FastPath Engine')),
|
||||
E('td', { 'id': 'fastpath_state' }, E('em', {}, _('Collecting data...')))
|
||||
]),
|
||||
E('tr', {}, [
|
||||
E('td', { 'width': '33%' }, _('Full Cone NAT')),
|
||||
E('td', { 'id': 'fullcone_state' }, E('em', {}, _('Collecting data...')))
|
||||
]),
|
||||
E('tr', {}, [
|
||||
E('td', { 'width': '33%' }, _('TCP CCA')),
|
||||
E('td', { 'id': 'tcpcca_state' }, E('em', {}, _('Collecting data...')))
|
||||
])
|
||||
]);
|
||||
|
||||
if (ppe_stats.hasOwnProperty('PPE_NUM')) {
|
||||
poll.add(function () {
|
||||
return L.resolveDefault(getMTKPPEStatus()).then(function (res) {
|
||||
var ppe_num = parseInt(res[0].PPE_NUM);
|
||||
for (var i=0; i<ppe_num; i++) {
|
||||
var ppe_bar = document.getElementById(`ppe${i}_entry`);
|
||||
ppe_bar.innerHTML = E('td', {},
|
||||
progressbar(res[0][`BIND_PPE${i}`], res[0][`ALL_PPE${i}`])).innerHTML;
|
||||
}
|
||||
});
|
||||
}, 3);
|
||||
|
||||
var ppe_num = parseInt(ppe_stats.PPE_NUM);
|
||||
|
||||
for (var i=0; i<ppe_num; i++) {
|
||||
acc_status.appendChild(E('tr', {}, [
|
||||
E('td', { 'width': '33%' }, `PPE${i} ` + _('Bind Entrys')),
|
||||
E('td', {'id': `ppe${i}_entry` },
|
||||
progressbar(ppe_stats[`BIND_PPE${i}`], ppe_stats[`ALL_PPE${i}`]))
|
||||
]));
|
||||
}
|
||||
}
|
||||
|
||||
return E('fieldset', { 'class': 'cbi-section' }, [
|
||||
E('legend', {}, _('Acceleration Status')),
|
||||
acc_status
|
||||
]);
|
||||
}
|
||||
|
||||
s = m.section(form.NamedSection, 'config', 'turboacc');
|
||||
|
||||
o = s.option(form.ListValue, 'fastpath', _('Fastpath engine'),
|
||||
_('The offloading engine for routing/NAT.'));
|
||||
o.value('disabled', _('Disable'));
|
||||
if (features.hasFLOWOFFLOADING)
|
||||
o.value('flow_offloading', _('Flow offloading'));
|
||||
if (features.hasFASTCLASSIFIER)
|
||||
o.value('fast_classifier', _('Fast classifier'));
|
||||
if (features.hasSHORTCUTFECM)
|
||||
o.value('shortcut_fe_cm', _('SFE connection manager'));
|
||||
if (features.hasMEDIATEKHNAT)
|
||||
o.value('mediatek_hnat', _('MediaTek HNAT'));
|
||||
o.default = 'disabled';
|
||||
o.rmempty = false;
|
||||
o.onchange = function(ev, section_id, value) {
|
||||
var desc = ev.target.nextElementSibling;
|
||||
if (value === 'flow_offloading')
|
||||
desc.innerHTML = _('Software based offloading for routing/NAT.');
|
||||
else if (value === 'fast_classifier')
|
||||
desc.innerHTML = _('Fast classifier connection manager for the shortcut forwarding engine.');
|
||||
else if (value === 'shortcut_fe_cm')
|
||||
desc.innerHTML = _('Simple connection manager for the shortcut forwarding engine.');
|
||||
else if (value === 'mediatek_hnat')
|
||||
desc.innerHTML = _('MediaTek\'s open source hardware offloading engine.');
|
||||
else
|
||||
desc.innerHTML = _('The offloading engine for routing/NAT.');
|
||||
}
|
||||
|
||||
o = s.option(form.Flag, 'fastpath_fo_hw', _('Hardware flow offloading'),
|
||||
_('Requires hardware NAT support. Implemented at least for mt7621.'));
|
||||
o.default = o.disabled;
|
||||
o.rmempty = false;
|
||||
o.depends('fastpath', 'flow_offloading');
|
||||
|
||||
o = s.option(form.Flag, 'fastpath_fc_br', _('Bridge Acceleration'),
|
||||
_('Enable bridge acceleration (may be functional conflict with bridge-mode VPN server).'));
|
||||
o.default = o.disabled;
|
||||
o.rmempty = false;
|
||||
o.depends('fastpath', 'fast_classifier');
|
||||
|
||||
if (features.hasIPV6) {
|
||||
o = s.option(form.Flag, 'fastpath_fc_ipv6', _('IPv6 acceleration'),
|
||||
_('Enable IPv6 Acceleration.'));
|
||||
o.default = o.disabled;
|
||||
o.rmempty = false;
|
||||
o.depends('fastpath', 'fast_classifier');
|
||||
}
|
||||
|
||||
o = s.option(form.Flag, 'fastpath_mh_eth_hnat', _('Enable ethernet HNAT'),
|
||||
_('Enable hardware offloading for wired connections.'));
|
||||
o.default = o.enabled;
|
||||
o.rmempty = false;
|
||||
o.depends('fastpath', 'mediatek_hnat');
|
||||
|
||||
o = s.option(form.Flag, 'fastpath_mh_eth_hnat_v6', _('Enable ethernet IPv6 HNAT'),
|
||||
_('Enable hardware offloading for wired IPv6 connections.'));
|
||||
o.default = o.enabled;
|
||||
o.rmempty = false;
|
||||
o.depends('fastpath_mh_eth_hnat', '1');
|
||||
|
||||
o = s.option(form.Value, 'fastpath_mh_eth_hnat_ap', _('Enable AP Mode'),
|
||||
_('Fill in ip to enable AP Mode(reboot needed)'));
|
||||
o.optional = true;
|
||||
o.depends('fastpath_mh_eth_hnat', '1');
|
||||
|
||||
o = s.option(form.Value, 'fastpath_mh_eth_hnat_bind_rate', _('HNAT bind rate threshold (pps)'),
|
||||
_('The smaller the threshold, the easier it is for the connection to be accelerated.'));
|
||||
o.optional = true;
|
||||
o.datatype = 'range(1,30)';
|
||||
o.placeholder = 30;
|
||||
o.depends('fastpath_mh_eth_hnat', '1');
|
||||
|
||||
o = s.option(form.ListValue, 'fastpath_mh_eth_hnat_ppenum', _('Number of HNAT PPE'),
|
||||
_('Apply this setting after reboot.'));
|
||||
o.rmempty = false;
|
||||
o.value(1);
|
||||
o.value(2);
|
||||
o.default = 2;
|
||||
o.depends('fastpath_mh_eth_hnat', '1');
|
||||
|
||||
o = s.option(form.ListValue, 'fullcone', _('Full cone NAT'),
|
||||
_('Full cone NAT (NAT1) can improve gaming performance effectively.'));
|
||||
o.value('0', _('Disable'))
|
||||
o.value('2', _('Boardcom_FULLCONE_NAT'));
|
||||
o.default = '0';
|
||||
o.rmempty = false;
|
||||
|
||||
o = s.option(form.ListValue, 'tcpcca', _('TCP CCA'),
|
||||
_('TCP congestion control algorithm.'));
|
||||
for (var i of features.hasTCPCCA.split(' ').sort())
|
||||
o.value(i);
|
||||
o.default = 'cubic';
|
||||
o.rmempty = false;
|
||||
|
||||
return m.render();
|
||||
}
|
||||
});
|
@ -0,0 +1,185 @@
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=UTF-8"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:91
|
||||
msgid "Acceleration Status"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:191
|
||||
msgid "Boardcom_FULLCONE_NAT"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:151
|
||||
msgid "Bridge Acceleration"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:95
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:99
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:103
|
||||
msgid "Collecting data..."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:120
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:188
|
||||
msgid "Disable"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:57
|
||||
msgid "Disabled"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:159
|
||||
msgid "Enable IPv6 Acceleration."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:177
|
||||
msgid "Enable AP Mode"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:178
|
||||
msgid "Fill in ip to enable AP Mode(reboot needed)"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:183
|
||||
msgid "HNAT bind rate threshold (pps)"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:184
|
||||
msgid "The smaller the threshold, the easier it is for the connection to be accelerated."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:152
|
||||
msgid ""
|
||||
"Enable bridge acceleration (may be functional conflict with bridge-mode VPN "
|
||||
"server)."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:165
|
||||
msgid "Enable ethernet HNAT"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:171
|
||||
msgid "Enable ethernet IPv6 HNAT"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:172
|
||||
msgid "Enable hardware offloading for wired IPv6 connections."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:166
|
||||
msgid "Enable hardware offloading for wired connections."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:178
|
||||
msgid "Enable hardware offloading for wireless connections."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:177
|
||||
msgid "Enable wireless HNAT"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:124
|
||||
msgid "Fast classifier"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:136
|
||||
msgid "Fast classifier connection manager for the shortcut forwarding engine."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:94
|
||||
msgid "FastPath Engine"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:118
|
||||
msgid "Fastpath engine"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:122
|
||||
msgid "Flow offloading"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:98
|
||||
msgid "Full Cone NAT"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:186
|
||||
msgid "Full cone NAT"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:187
|
||||
msgid "Full cone NAT (NAT1) can improve gaming performance effectively."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/root/usr/share/rpcd/acl.d/luci-app-turboacc.json:3
|
||||
msgid "Grant UCI access for luci-app-turboacc"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:145
|
||||
msgid "Hardware flow offloading"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:158
|
||||
msgid "IPv6 acceleration"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:128
|
||||
msgid "MediaTek HNAT"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:140
|
||||
msgid "MediaTek's open source hardware offloading engine."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:74
|
||||
msgid "Open source flow offloading engine (fast path or hardware NAT)."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:179
|
||||
msgid "Redirect to wireless settings"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:146
|
||||
msgid "Requires hardware NAT support. Implemented at least for mt7621."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:126
|
||||
msgid "SFE connection manager"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:138
|
||||
msgid "Simple connection manager for the shortcut forwarding engine."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:134
|
||||
msgid "Software based offloading for routing/NAT."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:102
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:195
|
||||
msgid "TCP CCA"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:196
|
||||
msgid "TCP congestion control algorithm."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:119
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:142
|
||||
msgid "The offloading engine for routing/NAT."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/root/usr/share/luci/menu.d/luci-app-turboacc.json:3
|
||||
msgid "TurboACC"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:73
|
||||
msgid "TurboACC settings"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:190
|
||||
msgid "XT_FULLCONE_NAT"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:191
|
||||
msgid "Boardcom_FULLCONE_NAT"
|
||||
msgstr ""
|
@ -0,0 +1,200 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Last-Translator: Automatically generated\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: zh-Hans\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:91
|
||||
msgid "Acceleration Status"
|
||||
msgstr "加速状态"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:191
|
||||
msgid "Boardcom_FULLCONE_NAT"
|
||||
msgstr "Boardcom_FULLCONE_NAT(更低的CPU占用)"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:151
|
||||
msgid "Bridge Acceleration"
|
||||
msgstr "桥接加速"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:95
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:99
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:103
|
||||
msgid "Collecting data..."
|
||||
msgstr "正在收集数据…"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:120
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:188
|
||||
msgid "Disable"
|
||||
msgstr "禁用"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:57
|
||||
msgid "Disabled"
|
||||
msgstr "已禁用"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:159
|
||||
msgid "Enable IPv6 Acceleration."
|
||||
msgstr "启用 IPv6 加速。"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:152
|
||||
msgid ""
|
||||
"Enable bridge acceleration (may be functional conflict with bridge-mode VPN "
|
||||
"server)."
|
||||
msgstr "启用桥接加速(可能会与桥接模式的 VPN 服务器冲突)。"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:165
|
||||
msgid "Enable ethernet HNAT"
|
||||
msgstr "启用以太网 HNAT"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:171
|
||||
msgid "Enable ethernet IPv6 HNAT"
|
||||
msgstr "启用以太网 IPv6 HNAT"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:172
|
||||
msgid "Enable hardware offloading for wired IPv6 connections."
|
||||
msgstr "为有线 IPv6 连接启用硬件加速。"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:177
|
||||
msgid "Enable AP Mode"
|
||||
msgstr "启用AP模式"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:178
|
||||
msgid "Fill in ip to enable AP Mode(reboot needed)"
|
||||
msgstr "填写IP将启动AP模式(同网段不重复ip,需重启后生效.对于无线桥接,请桥接完成后再启用AP模式)"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:183
|
||||
msgid "HNAT bind rate threshold (pps)"
|
||||
msgstr "HNAT连接速率绑定阈值(pps)"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:184
|
||||
msgid "The smaller the threshold, the easier it is for the connection to be accelerated."
|
||||
msgstr "阈值越小,连接越容易被加速。"
|
||||
|
||||
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:166
|
||||
msgid "Enable hardware offloading for wired connections."
|
||||
msgstr "为有线连接启用硬件加速。"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:178
|
||||
msgid "Enable hardware offloading for wireless connections."
|
||||
msgstr "为无线连接启用硬件加速。"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:177
|
||||
msgid "Enable wireless HNAT"
|
||||
msgstr "启用无线 HNAT"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:124
|
||||
msgid "Fast classifier"
|
||||
msgstr "Fast classifier"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:136
|
||||
msgid "Fast classifier connection manager for the shortcut forwarding engine."
|
||||
msgstr "快速转发引擎(SFE)的 fast classifier 连接管理器。"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:94
|
||||
msgid "FastPath Engine"
|
||||
msgstr "快速转发引擎"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:118
|
||||
msgid "Fastpath engine"
|
||||
msgstr "快速转发引擎"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:122
|
||||
msgid "Flow offloading"
|
||||
msgstr "Flow offloading"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:98
|
||||
msgid "Full Cone NAT"
|
||||
msgstr "全锥形 NAT"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:186
|
||||
msgid "Full cone NAT"
|
||||
msgstr "全锥形 NAT"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:187
|
||||
msgid "Full cone NAT (NAT1) can improve gaming performance effectively."
|
||||
msgstr "Full cone NAT(NAT1)可以有效提升游戏体验。"
|
||||
|
||||
#: applications/luci-app-turboacc/root/usr/share/rpcd/acl.d/luci-app-turboacc.json:3
|
||||
msgid "Grant UCI access for luci-app-turboacc"
|
||||
msgstr "授予 luci-app-turboacc 访问 UCI 配置的权限。"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:145
|
||||
msgid "Hardware flow offloading"
|
||||
msgstr "硬件流量分载"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:158
|
||||
msgid "IPv6 acceleration"
|
||||
msgstr "IPv6 加速"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:128
|
||||
msgid "MediaTek HNAT"
|
||||
msgstr "MediaTek HNAT"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:140
|
||||
msgid "MediaTek's open source hardware offloading engine."
|
||||
msgstr "由联发科实现的开源硬件流量分载引擎。"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:74
|
||||
msgid "Open source flow offloading engine (fast path or hardware NAT)."
|
||||
msgstr "开源流量分载引擎(快速转发或硬件 NAT)。"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:179
|
||||
msgid "Redirect to wireless settings"
|
||||
msgstr "跳转到无线设置"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:146
|
||||
msgid "Requires hardware NAT support. Implemented at least for mt7621."
|
||||
msgstr "需要硬件 NAT 支持。目前 mt7621 已实现。"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:126
|
||||
msgid "SFE connection manager"
|
||||
msgstr "SFE connection manager"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:138
|
||||
msgid "Simple connection manager for the shortcut forwarding engine."
|
||||
msgstr "快速转发引擎(SFE)的简单连接管理器。"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:134
|
||||
msgid "Software based offloading for routing/NAT."
|
||||
msgstr "基于软件的 路由/NAT 分载。"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:102
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:195
|
||||
msgid "TCP CCA"
|
||||
msgstr "TCP 拥塞控制算法"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:196
|
||||
msgid "TCP congestion control algorithm."
|
||||
msgstr "TCP 拥塞控制算法。"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:119
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:142
|
||||
msgid "The offloading engine for routing/NAT."
|
||||
msgstr "用于 路由/NAT 的分载引擎。"
|
||||
|
||||
#: applications/luci-app-turboacc/root/usr/share/luci/menu.d/luci-app-turboacc.json:3
|
||||
msgid "TurboACC"
|
||||
msgstr "网络加速"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:73
|
||||
msgid "TurboACC settings"
|
||||
msgstr "网络加速设置"
|
||||
|
||||
#: applications/luci-app-turboacc/htdocs/luci-static/resources/view/turboacc.js:190
|
||||
msgid "XT_FULLCONE_NAT"
|
||||
msgstr "XT_FULLCONE_NAT(更佳的兼容性)"
|
||||
|
||||
msgid "Apply this setting after reboot."
|
||||
msgstr "重启后应用此项设置。"
|
||||
|
||||
msgid "Number of HNAT PPE"
|
||||
msgstr "HNAT PPE数量"
|
||||
|
||||
msgid "Bind Entrys"
|
||||
msgstr "已绑定连接数"
|
||||
|
@ -0,0 +1,2 @@
|
||||
config turboacc 'config'
|
||||
|
@ -0,0 +1,127 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
# Copyright (C) 2018 Lean <coolsnowwolf@gmail.com>
|
||||
# Copyright (C) 2019-2022 Tianling Shen <cnsztl@immortalwrt.org>
|
||||
|
||||
START=90
|
||||
STOP=10
|
||||
USE_PROCD=1
|
||||
start_service() {
|
||||
config_load "turboacc"
|
||||
|
||||
local fastpath
|
||||
config_get fastpath "config" "fastpath"
|
||||
|
||||
if [ "$fastpath" != "fast_classifier" ] && lsmod | grep -q "fast_classifier"; then
|
||||
echo "0" > "/sys/fast_classifier/skip_to_bridge_ingress" 2>"/dev/null"
|
||||
rm -f "/dev/sfe_ipv6"
|
||||
rmmod "fast_classifier" 2>"/dev/null"
|
||||
fi
|
||||
|
||||
if [ "$fastpath" != "shortcut_fe_cm" ] && lsmod | grep -q "shortcut_fe_cm"; then
|
||||
rmmod "shortcut_fe_cm" 2>"/dev/null"
|
||||
fi
|
||||
|
||||
if [ "$fastpath" != "mediatek_hnat" ] && lsmod | grep -q "mtkhnat"; then
|
||||
echo "0" > "/sys/kernel/debug/hnat/hook_toggle" 2>"/dev/null"
|
||||
fi
|
||||
|
||||
case "$fastpath" in
|
||||
"fast_classifier")
|
||||
local fastpath_fc_br fastpath_fc_ipv6
|
||||
config_get_bool fastpath_fc_br "config" "fastpath_fc_br" "0"
|
||||
config_get_bool fastpath_fc_ipv6 "config" "fastpath_fc_ipv6" "0"
|
||||
|
||||
lsmod | grep -q "fast_classifier" || modprobe "fast_classifier" 2>"/dev/null"
|
||||
echo "$fastpath_fc_br" > "/sys/fast_classifier/skip_to_bridge_ingress" 2>"/dev/null"
|
||||
if [ "$fastpath_fc_ipv6" -eq "1" ]; then
|
||||
[ -e "/dev/sfe_ipv6" ] || mknod "/dev/sfe_ipv6" "c" "$(cat "/sys/sfe_ipv6/debug_dev")" "0"
|
||||
else
|
||||
[ ! -e "/dev/sfe_ipv6" ] || rm -f "/dev/sfe_ipv6"
|
||||
fi
|
||||
;;
|
||||
"shortcut_fe_cm")
|
||||
lsmod |grep -q "shortcut_fe_cm" || modprobe "shortcut_fe_cm" 2>"/dev/null"
|
||||
;;
|
||||
"mediatek_hnat")
|
||||
local fastpath_mh_eth_hnat
|
||||
local hnat_path="/sys/kernel/debug/hnat"
|
||||
|
||||
config_get_bool "fastpath_mh_eth_hnat" "config" "fastpath_mh_eth_hnat" "1"
|
||||
echo "$fastpath_mh_eth_hnat" > "$hnat_path/hook_toggle"
|
||||
|
||||
if [ "$fastpath_mh_eth_hnat" -eq "1" ]; then
|
||||
local fastpath_mh_eth_hnat_v6 fastpath_mh_eth_hnat_ap fastpath_mh_eth_hnat_bind_rate
|
||||
|
||||
config_get_bool "fastpath_mh_eth_hnat_v6" "config" "fastpath_mh_eth_hnat_v6" "1"
|
||||
echo "8 $fastpath_mh_eth_hnat_v6" > "$hnat_path/hnat_setting"
|
||||
|
||||
config_get "fastpath_mh_eth_hnat_bind_rate" "config" "fastpath_mh_eth_hnat_bind_rate" "30"
|
||||
echo "11 $fastpath_mh_eth_hnat_bind_rate" > "$hnat_path/hnat_setting"
|
||||
|
||||
config_get "fastpath_mh_eth_hnat_ap" "config" "fastpath_mh_eth_hnat_ap" ""
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
local fullcone
|
||||
config_get "fullcone" "config" "fullcone" "2"
|
||||
echo "$fullcone" > /proc/sys/net/netfilter/nf_conntrack_nat_mode
|
||||
|
||||
local tcpcca
|
||||
config_get "tcpcca" "config" "tcpcca" "cubic"
|
||||
sysctl -w net.ipv4.tcp_congestion_control="$tcpcca" >"/dev/null"
|
||||
|
||||
uci -q commit "firewall"
|
||||
/etc/init.d/firewall restart >"/dev/null" 2>&1
|
||||
available_interfaces=""
|
||||
for iface in eth0 eth1 wan; do
|
||||
if ifconfig $iface 2>&1 | grep -qv "error fetching interface information"; then
|
||||
echo "$iface interface detected."
|
||||
available_interfaces="$available_interfaces $iface"
|
||||
else
|
||||
echo "$iface interface not found."
|
||||
fi
|
||||
done
|
||||
|
||||
if echo "$fastpath_mh_eth_hnat_ap" | grep -qE '^([0-9]{1,3}\.){3}[0-9]{1,3}$'; then
|
||||
echo "Valid IPv4 address detected: $fastpath_mh_eth_hnat_ap"
|
||||
uci delete network.wan
|
||||
uci delete network.wwan
|
||||
uci delete network.wan6
|
||||
|
||||
current_ports=$(uci get network.@device[0].ports)
|
||||
echo "Current bridge ports: $current_ports"
|
||||
|
||||
new_ports="$current_ports"
|
||||
for port in $available_interfaces; do
|
||||
if echo "$current_ports" | grep -qw "$port"; then
|
||||
echo "Port $port is already part of the bridge"
|
||||
else
|
||||
echo "Adding port $port to the bridge"
|
||||
new_ports="$new_ports $port"
|
||||
fi
|
||||
done
|
||||
|
||||
uci set network.@device[0].ports="$new_ports"
|
||||
uci set dhcp.lan.ignore=1
|
||||
uci set network.lan.ipaddr="$fastpath_mh_eth_hnat_ap"
|
||||
uci set wireless.wifinet1.network='lan'
|
||||
uci set wireless.wifinet2.network='lan'
|
||||
echo "Committing changes"
|
||||
uci commit
|
||||
else
|
||||
echo "Invalid IPv4 address: $fastpath_mh_eth_hnat_ap"
|
||||
fi
|
||||
}
|
||||
|
||||
reload_service() {
|
||||
start
|
||||
}
|
||||
|
||||
stop_service() {
|
||||
stop
|
||||
}
|
||||
|
||||
service_triggers() {
|
||||
procd_add_reload_trigger "turboacc"
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
#!/bin/sh
|
||||
|
||||
|
||||
kernel_ver="$(uname -r)"
|
||||
|
||||
if [ -e "/lib/modules/$kernel_ver/mtkhnat.ko" ]; then
|
||||
uci -q set "turboacc.config.fastpath"="mediatek_hnat"
|
||||
uci -q set "turboacc.config.fastpath_mh_eth_hnat"="1"
|
||||
uci -q set "turboacc.config.fastpath_mh_eth_hnat_v6"="1"
|
||||
uci -q set "turboacc.config.fastpath_mh_eth_hnat_macvlan"="0"
|
||||
uci -q set "turboacc.config.fastpath_mh_eth_hnat_bind_rate"="30"
|
||||
uci -q set "turboacc.config.fastpath_mh_eth_hnat_ppenum"="2"
|
||||
elif [ -e "/lib/modules/$kernel_ver/fast-classifier.ko" ]; then
|
||||
uci -q set "turboacc.config.fastpath"="fast_classifier"
|
||||
uci -q set "turboacc.config.fastpath_fc_br"="1"
|
||||
if [ -d "/proc/sys/net/ipv6" ]; then
|
||||
uci -q set "turboacc.config.fastpath_fc_ipv6"="1"
|
||||
else
|
||||
uci -q set "turboacc.config.fastpath_fc_ipv6"="0"
|
||||
fi
|
||||
elif [ -e "/lib/modules/$kernel_ver/shortcut-fe-cm.ko" ]; then
|
||||
uci -q set "turboacc.config.fastpath"="shortcut_fe_cm"
|
||||
else
|
||||
uci -q set "turboacc.config.fastpath"="none"
|
||||
fi
|
||||
|
||||
uci -q set "turboacc.config.fullcone"="1"
|
||||
|
||||
uci -q commit "turboacc"
|
||||
|
||||
uci -q batch <<-EOF >"/dev/null"
|
||||
delete ucitrack.@turboacc[-1]
|
||||
add ucitrack turboacc
|
||||
EOF
|
||||
|
||||
rm -f /tmp/luci-indexcache
|
||||
exit 0
|
@ -0,0 +1,155 @@
|
||||
#!/usr/bin/env lua
|
||||
-- Copyright (C) 2022 ImmortalWrt.org
|
||||
|
||||
local json = require "luci.jsonc"
|
||||
local fs = require "nixio.fs"
|
||||
local util = require "luci.util"
|
||||
local sys = require "luci.sys"
|
||||
|
||||
string.trim = util.trim
|
||||
|
||||
local function readfile(path)
|
||||
local s = fs.readfile(path)
|
||||
return s and (s:gsub("^%s+", ""):gsub("%s+$", ""))
|
||||
end
|
||||
|
||||
local methods = {
|
||||
getSystemFeatures = {
|
||||
call = function()
|
||||
local boardinfo = util.ubus("system", "board") or {}
|
||||
local features = {
|
||||
hasIPV6 = fs.access("/proc/net/ipv6_route"),
|
||||
-- disable FLOWOFFLOADING for mt798x
|
||||
hasFLOWOFFLOADING = false,
|
||||
hasFASTCLASSIFIER = fs.access("/lib/modules/" .. boardinfo.kernel .. "/fast-classifier.ko"),
|
||||
hasSHORTCUTFECM = fs.access("/lib/modules/" .. boardinfo.kernel .. "/shortcut-fe-cm.ko"),
|
||||
hasMEDIATEKHNAT = fs.access("/lib/modules/" .. boardinfo.kernel .. "/mtkhnat.ko"),
|
||||
hasXTFULLCONENAT = fs.access("/lib/modules/" .. boardinfo.kernel .. "/xt_FULLCONENAT.ko"),
|
||||
hasTCPCCA = readfile("/proc/sys/net/ipv4/tcp_available_congestion_control")
|
||||
}
|
||||
print(json.stringify(features))
|
||||
end
|
||||
},
|
||||
getFastPathStat = {
|
||||
call = function()
|
||||
local fptype
|
||||
if fs.access("/sys/module/xt_FLOWOFFLOAD/refcnt") and
|
||||
(readfile("/sys/module/xt_FLOWOFFLOAD/refcnt") or "0") ~= "0" then
|
||||
fptype = "Flow offloading"
|
||||
elseif fs.stat("/sys/module/fast_classifier", "type") == "dir" then
|
||||
fptype = "Fast classifier"
|
||||
elseif fs.stat("/sys/module/shortcut_fe_cm", "type") == "dir" then
|
||||
fptype = "Shortcut-FE CM"
|
||||
elseif fs.stat("/sys/kernel/debug/hnat", "type") == "dir" then
|
||||
local ethernet_hnat = readfile("/sys/kernel/debug/hnat/hook_toggle")
|
||||
ethernet_hnat = (ethernet_hnat ~= "enabled") and " / Ethernet HNAT Disabled" or ""
|
||||
|
||||
local wireless_hnat = (sys.call("grep -q 'WHNAT=1' '/etc/wireless/mediatek/'*_card*.dat") ~= 0) and " / Wireless HNAT Disabled" or ""
|
||||
if (ethernet_hnat == "") or (wireless_hnat == "") then
|
||||
fptype = "MediaTek HNAT" .. ethernet_hnat .. wireless_hnat
|
||||
end
|
||||
end
|
||||
print(json.stringify({ type = fptype }))
|
||||
end
|
||||
},
|
||||
getFullConeStat = {
|
||||
call = function()
|
||||
local fctype
|
||||
if fs.access("/sys/module/xt_FULLCONENAT/refcnt") and
|
||||
(readfile("/sys/module/xt_FULLCONENAT/refcnt") or "0") ~= "0" then
|
||||
fctype = "xt_FULLCONENAT"
|
||||
elseif fs.access("/proc/sys/net/netfilter/nf_conntrack_nat_mode") and
|
||||
(readfile("/proc/sys/net/netfilter/nf_conntrack_nat_mode") or "0") ~= "0" then
|
||||
fctype = "Boardcom Fullcone"
|
||||
end
|
||||
print(json.stringify({ type = fctype }))
|
||||
end
|
||||
},
|
||||
getTCPCCAStat = {
|
||||
call = function()
|
||||
local ccatype = readfile("/proc/sys/net/ipv4/tcp_congestion_control")
|
||||
ccatype = ccatype and ccatype:upper() or nil
|
||||
print(json.stringify({ type = ccatype }))
|
||||
end
|
||||
},
|
||||
getMTKPPEStat = {
|
||||
call = function()
|
||||
local ppe_stat = {}
|
||||
local ppe_path = "/sys/kernel/debug/hnat/hnat_stats"
|
||||
local fd = io.open(ppe_path, 'r')
|
||||
|
||||
if fd then
|
||||
for line in fd:lines() do
|
||||
local i = string.find(line, "=")
|
||||
if i then
|
||||
ppe_stat[string.sub(line,1,i-1)] = string.sub(line,i+1)
|
||||
end
|
||||
end
|
||||
fd:close()
|
||||
end
|
||||
|
||||
print(json.stringify(ppe_stat))
|
||||
end
|
||||
}
|
||||
}
|
||||
|
||||
local function parseInput()
|
||||
local parse = json.new()
|
||||
local done, err
|
||||
|
||||
while true do
|
||||
local chunk = io.read(4096)
|
||||
if not chunk then
|
||||
break
|
||||
elseif not done and not err then
|
||||
done, err = parse:parse(chunk)
|
||||
end
|
||||
end
|
||||
|
||||
if not done then
|
||||
print(json.stringify({ error = err or "Incomplete input" }))
|
||||
os.exit(1)
|
||||
end
|
||||
|
||||
return parse:get()
|
||||
end
|
||||
|
||||
local function validateArgs(func, uargs)
|
||||
local method = methods[func]
|
||||
if not method then
|
||||
print(json.stringify({ error = "Method not found" }))
|
||||
os.exit(1)
|
||||
end
|
||||
|
||||
if type(uargs) ~= "table" then
|
||||
print(json.stringify({ error = "Invalid arguments" }))
|
||||
os.exit(1)
|
||||
end
|
||||
|
||||
uargs.ubus_rpc_session = nil
|
||||
|
||||
local k, v
|
||||
local margs = method.args or {}
|
||||
for k, v in pairs(uargs) do
|
||||
if margs[k] == nil or
|
||||
(v ~= nil and type(v) ~= type(margs[k]))
|
||||
then
|
||||
print(json.stringify({ error = "Invalid arguments" }))
|
||||
os.exit(1)
|
||||
end
|
||||
end
|
||||
|
||||
return method
|
||||
end
|
||||
|
||||
if arg[1] == "list" then
|
||||
local _, method, rv = nil, nil, {}
|
||||
for _, method in pairs(methods) do rv[_] = method.args or {} end
|
||||
print((json.stringify(rv):gsub(":%[%]", ":{}")))
|
||||
elseif arg[1] == "call" then
|
||||
local args = parseInput()
|
||||
local method = validateArgs(arg[2], args)
|
||||
local result, code = method.call(args)
|
||||
print((json.stringify(result):gsub("^%[%]$", "{}")))
|
||||
os.exit(code or 0)
|
||||
end
|
@ -0,0 +1,13 @@
|
||||
{
|
||||
"admin/network/turboacc": {
|
||||
"title": "TurboACC",
|
||||
"action": {
|
||||
"type": "view",
|
||||
"path": "turboacc"
|
||||
},
|
||||
"depends": {
|
||||
"acl": [ "luci-app-turboacc" ],
|
||||
"uci": { "turboacc": true }
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
{
|
||||
"luci-app-turboacc": {
|
||||
"description": "Grant UCI access for luci-app-turboacc",
|
||||
"read": {
|
||||
"ubus": {
|
||||
"luci.turboacc": [ "getSystemFeatures", "getFastPathStat", "getFullConeStat", "getTCPCCAStat", "getMTKPPEStat" ]
|
||||
},
|
||||
"uci": [ "turboacc" ]
|
||||
},
|
||||
"write": {
|
||||
"uci": [ "turboacc" ]
|
||||
}
|
||||
}
|
||||
}
|
14
package/mtk/applications/luci-app-upnp-mtk-adjust/Makefile
Normal file
14
package/mtk/applications/luci-app-upnp-mtk-adjust/Makefile
Normal file
@ -0,0 +1,14 @@
|
||||
#
|
||||
# Copyright (C) 2008-2014 The LuCI Team <luci@lists.subsignal.org>
|
||||
#
|
||||
# This is free software, licensed under the Apache License, Version 2.0 .
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
LUCI_TITLE:=Universal Plug & Play configuration module
|
||||
LUCI_DEPENDS:=+miniupnpd-mtk-adjust +rpcd-mod-ucode
|
||||
|
||||
include $(TOPDIR)/feeds/luci/luci.mk
|
||||
|
||||
# call BuildPackage - OpenWrt buildroot signature
|
@ -0,0 +1,74 @@
|
||||
'use strict';
|
||||
'require baseclass';
|
||||
'require dom';
|
||||
'require rpc';
|
||||
'require uci';
|
||||
|
||||
var callUpnpGetStatus, callUpnpDeleteRule, handleDelRule;
|
||||
|
||||
callUpnpGetStatus = rpc.declare({
|
||||
object: 'luci.upnp',
|
||||
method: 'get_status',
|
||||
expect: { }
|
||||
});
|
||||
|
||||
callUpnpDeleteRule = rpc.declare({
|
||||
object: 'luci.upnp',
|
||||
method: 'delete_rule',
|
||||
params: [ 'token' ],
|
||||
expect: { result : "OK" },
|
||||
});
|
||||
|
||||
handleDelRule = function(num, ev) {
|
||||
dom.parent(ev.currentTarget, '.tr').style.opacity = 0.5;
|
||||
ev.currentTarget.classList.add('spinning');
|
||||
ev.currentTarget.disabled = true;
|
||||
ev.currentTarget.blur();
|
||||
callUpnpDeleteRule(num);
|
||||
};
|
||||
|
||||
return baseclass.extend({
|
||||
title: _('Active UPnP Redirects'),
|
||||
|
||||
load: function() {
|
||||
return Promise.all([
|
||||
callUpnpGetStatus(),
|
||||
]);
|
||||
},
|
||||
|
||||
render: function(data) {
|
||||
|
||||
var table = E('table', { 'class': 'table', 'id': 'upnp_status_table' }, [
|
||||
E('tr', { 'class': 'tr table-titles' }, [
|
||||
E('th', { 'class': 'th' }, _('Protocol')),
|
||||
E('th', { 'class': 'th' }, _('External Port')),
|
||||
E('th', { 'class': 'th' }, _('Client Address')),
|
||||
E('th', { 'class': 'th' }, _('Host')),
|
||||
E('th', { 'class': 'th' }, _('Client Port')),
|
||||
E('th', { 'class': 'th' }, _('Description')),
|
||||
E('th', { 'class': 'th cbi-section-actions' }, '')
|
||||
])
|
||||
]);
|
||||
|
||||
var rules = Array.isArray(data[0].rules) ? data[0].rules : [];
|
||||
|
||||
var rows = rules.map(function(rule) {
|
||||
return [
|
||||
rule.proto,
|
||||
rule.extport,
|
||||
rule.intaddr,
|
||||
rule.host_hint || _('Unknown'),
|
||||
rule.intport,
|
||||
rule.descr,
|
||||
E('button', {
|
||||
'class': 'btn cbi-button-remove',
|
||||
'click': L.bind(handleDelRule, this, rule.num)
|
||||
}, [ _('Delete') ])
|
||||
];
|
||||
});
|
||||
|
||||
cbi_update_table(table, rows, E('em', _('There are no active redirects.')));
|
||||
|
||||
return table;
|
||||
}
|
||||
});
|
@ -0,0 +1,215 @@
|
||||
'use strict';
|
||||
'require view';
|
||||
'require dom';
|
||||
'require poll';
|
||||
'require uci';
|
||||
'require rpc';
|
||||
'require form';
|
||||
|
||||
var callInitAction, callUpnpGetStatus, callUpnpDeleteRule, handleDelRule;
|
||||
|
||||
callInitAction = rpc.declare({
|
||||
object: 'luci',
|
||||
method: 'setInitAction',
|
||||
params: [ 'name', 'action' ],
|
||||
expect: { result: false }
|
||||
});
|
||||
|
||||
callUpnpGetStatus = rpc.declare({
|
||||
object: 'luci.upnp',
|
||||
method: 'get_status',
|
||||
expect: { }
|
||||
});
|
||||
|
||||
callUpnpDeleteRule = rpc.declare({
|
||||
object: 'luci.upnp',
|
||||
method: 'delete_rule',
|
||||
params: [ 'token' ],
|
||||
expect: { result : "OK" },
|
||||
});
|
||||
|
||||
handleDelRule = function(num, ev) {
|
||||
dom.parent(ev.currentTarget, '.tr').style.opacity = 0.5;
|
||||
ev.currentTarget.classList.add('spinning');
|
||||
ev.currentTarget.disabled = true;
|
||||
ev.currentTarget.blur();
|
||||
callUpnpDeleteRule(num);
|
||||
};
|
||||
|
||||
return view.extend({
|
||||
load: function() {
|
||||
return Promise.all([
|
||||
callUpnpGetStatus(),
|
||||
uci.load('upnpd')
|
||||
]);
|
||||
},
|
||||
|
||||
poll_status: function(nodes, data) {
|
||||
|
||||
var rules = Array.isArray(data[0].rules) ? data[0].rules : [];
|
||||
|
||||
var rows = rules.map(function(rule) {
|
||||
return [
|
||||
rule.proto,
|
||||
rule.extport,
|
||||
rule.intaddr,
|
||||
rule.host_hint || _('Unknown'),
|
||||
rule.intport,
|
||||
rule.descr,
|
||||
E('button', {
|
||||
'class': 'btn cbi-button-remove',
|
||||
'click': L.bind(handleDelRule, this, rule.num)
|
||||
}, [ _('Delete') ])
|
||||
];
|
||||
});
|
||||
|
||||
cbi_update_table(nodes.querySelector('#upnp_status_table'), rows, E('em', _('There are no active redirects.')));
|
||||
|
||||
return;
|
||||
},
|
||||
|
||||
render: function(data) {
|
||||
|
||||
var m, s, o;
|
||||
|
||||
m = new form.Map('upnpd', [_('Universal Plug & Play')],
|
||||
_('UPnP allows clients in the local network to automatically configure the router.'));
|
||||
|
||||
s = m.section(form.GridSection, '_active_rules');
|
||||
|
||||
s.render = L.bind(function(view, section_id) {
|
||||
var table = E('table', { 'class': 'table cbi-section-table', 'id': 'upnp_status_table' }, [
|
||||
E('tr', { 'class': 'tr table-titles' }, [
|
||||
E('th', { 'class': 'th' }, _('Protocol')),
|
||||
E('th', { 'class': 'th' }, _('External Port')),
|
||||
E('th', { 'class': 'th' }, _('Client Address')),
|
||||
E('th', { 'class': 'th' }, _('Host')),
|
||||
E('th', { 'class': 'th' }, _('Client Port')),
|
||||
E('th', { 'class': 'th' }, _('Description')),
|
||||
E('th', { 'class': 'th cbi-section-actions' }, '')
|
||||
])
|
||||
]);
|
||||
|
||||
var rules = Array.isArray(data[0].rules) ? data[0].rules : [];
|
||||
|
||||
var rows = rules.map(function(rule) {
|
||||
return [
|
||||
rule.proto,
|
||||
rule.extport,
|
||||
rule.intaddr,
|
||||
rule.host_hint || _('Unknown'),
|
||||
rule.intport,
|
||||
rule.descr,
|
||||
E('button', {
|
||||
'class': 'btn cbi-button-remove',
|
||||
'click': L.bind(handleDelRule, this, rule.num)
|
||||
}, [ _('Delete') ])
|
||||
];
|
||||
});
|
||||
|
||||
cbi_update_table(table, rows, E('em', _('There are no active redirects.')));
|
||||
|
||||
return E('div', { 'class': 'cbi-section cbi-tblsection' }, [
|
||||
E('h3', _('Active UPnP Redirects')), table ]);
|
||||
}, o, this);
|
||||
|
||||
s = m.section(form.NamedSection, 'config', 'upnpd', _('MiniUPnP settings'));
|
||||
s.addremove = false;
|
||||
s.tab('general', _('General Settings'));
|
||||
s.tab('advanced', _('Advanced Settings'));
|
||||
|
||||
o = s.taboption('general', form.Flag, 'enabled', _('Start UPnP and NAT-PMP service'));
|
||||
o.rmempty = false;
|
||||
|
||||
s.taboption('general', form.Flag, 'enable_upnp', _('Enable UPnP functionality')).default = '1'
|
||||
s.taboption('general', form.Flag, 'enable_natpmp', _('Enable NAT-PMP functionality')).default = '1'
|
||||
|
||||
s.taboption('general', form.Flag, 'secure_mode', _('Enable secure mode'),
|
||||
_('Allow adding forwards only to requesting ip addresses')).default = '1'
|
||||
|
||||
s.taboption('general', form.Flag, 'igdv1', _('Enable IGDv1 mode'),
|
||||
_('Advertise as IGDv1 device instead of IGDv2')).default = '0'
|
||||
|
||||
s.taboption('general', form.Flag, 'log_output', _('Enable additional logging'),
|
||||
_('Puts extra debugging information into the system log'))
|
||||
|
||||
s.taboption('general', form.Value, 'download', _('Downlink'),
|
||||
_('Value in KByte/s, informational only')).rmempty = true
|
||||
|
||||
s.taboption('general', form.Value, 'upload', _('Uplink'),
|
||||
_('Value in KByte/s, informational only')).rmempty = true
|
||||
|
||||
o = s.taboption('general', form.Value, 'port', _('Port'))
|
||||
o.datatype = 'port'
|
||||
o.default = 5000
|
||||
|
||||
s.taboption('advanced', form.Flag, 'system_uptime', _('Report system instead of daemon uptime')).default = '1'
|
||||
|
||||
s.taboption('advanced', form.Value, 'uuid', _('Device UUID'))
|
||||
s.taboption('advanced', form.Value, 'serial_number', _('Announced serial number'))
|
||||
s.taboption('advanced', form.Value, 'model_number', _('Announced model number'))
|
||||
|
||||
o = s.taboption('advanced', form.Value, 'notify_interval', _('Notify interval'))
|
||||
o.datatype = 'uinteger'
|
||||
o.placeholder = 30
|
||||
|
||||
o = s.taboption('advanced', form.Value, 'clean_ruleset_threshold', _('Clean rules threshold'))
|
||||
o.datatype = 'uinteger'
|
||||
o.placeholder = 20
|
||||
|
||||
o = s.taboption('advanced', form.Value, 'clean_ruleset_interval', _('Clean rules interval'))
|
||||
o.datatype = 'uinteger'
|
||||
o.placeholder = 600
|
||||
|
||||
o = s.taboption('advanced', form.Value, 'presentation_url', _('Presentation URL'))
|
||||
o.placeholder = 'http://192.168.1.1/'
|
||||
|
||||
o = s.taboption('advanced', form.Value, 'upnp_lease_file', _('UPnP lease file'))
|
||||
o.placeholder = '/var/run/miniupnpd.leases'
|
||||
|
||||
s.taboption('advanced', form.Flag, 'use_stun', _('Use STUN'))
|
||||
|
||||
o = s.taboption('advanced', form.Value, 'stun_host', _('STUN Host'))
|
||||
o.depends('use_stun', '1');
|
||||
o.datatype = 'host'
|
||||
|
||||
o = s.taboption('advanced', form.Value, 'stun_port', _('STUN Port'))
|
||||
o.depends('use_stun', '1');
|
||||
o.datatype = 'port'
|
||||
o.placeholder = '0-65535'
|
||||
|
||||
s = m.section(form.GridSection, 'perm_rule', _('MiniUPnP ACLs'),
|
||||
_('ACLs specify which external ports may be redirected to which internal addresses and ports'))
|
||||
|
||||
s.sortable = true
|
||||
s.anonymous = true
|
||||
s.addremove = true
|
||||
|
||||
s.option(form.Value, 'comment', _('Comment'))
|
||||
|
||||
o = s.option(form.Value, 'ext_ports', _('External ports'))
|
||||
o.datatype = 'portrange'
|
||||
o.placeholder = '0-65535'
|
||||
|
||||
o = s.option(form.Value, 'int_addr', _('Internal addresses'))
|
||||
o.datatype = 'ip4addr'
|
||||
o.placeholder = '0.0.0.0/0'
|
||||
|
||||
o = s.option(form.Value, 'int_ports', _('Internal ports'))
|
||||
o.datatype = 'portrange'
|
||||
o.placeholder = '0-65535'
|
||||
|
||||
o = s.option(form.ListValue, 'action', _('Action'))
|
||||
o.value('allow', _('Allow'));
|
||||
o.value('deny', _('Deny'));
|
||||
|
||||
return m.render().then(L.bind(function(m, nodes) {
|
||||
poll.add(L.bind(function() {
|
||||
return Promise.all([
|
||||
callUpnpGetStatus()
|
||||
]).then(L.bind(this.poll_status, this, nodes));
|
||||
}, this), 5);
|
||||
return nodes;
|
||||
}, this, m));
|
||||
}
|
||||
});
|
238
package/mtk/applications/luci-app-upnp-mtk-adjust/po/ar/upnp.po
Normal file
238
package/mtk/applications/luci-app-upnp-mtk-adjust/po/ar/upnp.po
Normal file
@ -0,0 +1,238 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-05-19 19:36+0200\n"
|
||||
"PO-Revision-Date: 2024-07-16 16:41+0000\n"
|
||||
"Last-Translator: Rex_sa <rex.sa@pm.me>\n"
|
||||
"Language-Team: Arabic <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsupnp/ar/>\n"
|
||||
"Language: ar\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
|
||||
"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
|
||||
"X-Generator: Weblate 5.7-dev\n"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182
|
||||
msgid ""
|
||||
"ACLs specify which external ports may be redirected to which internal "
|
||||
"addresses and ports"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202
|
||||
msgid "Action"
|
||||
msgstr "إجراء"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:31
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:113
|
||||
msgid "Active UPnP Redirects"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:119
|
||||
msgid "Advanced Settings"
|
||||
msgstr "إعدادات متقدمة"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:131
|
||||
msgid "Advertise as IGDv1 device instead of IGDv2"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:203
|
||||
msgid "Allow"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:128
|
||||
msgid "Allow adding forwards only to requesting ip addresses"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150
|
||||
msgid "Announced model number"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:149
|
||||
msgid "Announced serial number"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160
|
||||
msgid "Clean rules interval"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156
|
||||
msgid "Clean rules threshold"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:45
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:85
|
||||
msgid "Client Address"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:47
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:87
|
||||
msgid "Client Port"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:188
|
||||
msgid "Comment"
|
||||
msgstr "تعليق"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:62
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:106
|
||||
msgid "Delete"
|
||||
msgstr "احدف"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:204
|
||||
msgid "Deny"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:48
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:88
|
||||
msgid "Description"
|
||||
msgstr "الوصف"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148
|
||||
msgid "Device UUID"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:136
|
||||
msgid "Downlink"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:130
|
||||
msgid "Enable IGDv1 mode"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:125
|
||||
msgid "Enable NAT-PMP functionality"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:124
|
||||
msgid "Enable UPnP functionality"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:133
|
||||
msgid "Enable additional logging"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:127
|
||||
msgid "Enable secure mode"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:44
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:84
|
||||
msgid "External Port"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:190
|
||||
msgid "External ports"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:118
|
||||
msgid "General Settings"
|
||||
msgstr "الاعدادات العامة"
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/rpcd/acl.d/luci-app-upnp.json:3
|
||||
msgid "Grant access to upnp procedures"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:46
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:86
|
||||
msgid "Host"
|
||||
msgstr "ضيف"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194
|
||||
msgid "Internal addresses"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:198
|
||||
msgid "Internal ports"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:181
|
||||
msgid "MiniUPnP ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:116
|
||||
msgid "MiniUPnP settings"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:152
|
||||
msgid "Notify interval"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:142
|
||||
msgid "Port"
|
||||
msgstr "المنفذ"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164
|
||||
msgid "Presentation URL"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:83
|
||||
msgid "Protocol"
|
||||
msgstr "البروتوكول"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:134
|
||||
msgid "Puts extra debugging information into the system log"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:146
|
||||
msgid "Report system instead of daemon uptime"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172
|
||||
msgid "STUN Host"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:176
|
||||
msgid "STUN Port"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:121
|
||||
msgid "Start UPnP and NAT-PMP service"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:70
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:110
|
||||
msgid "There are no active redirects."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/luci/menu.d/luci-app-upnp.json:3
|
||||
msgid "UPnP"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:76
|
||||
msgid ""
|
||||
"UPnP allows clients in the local network to automatically configure the "
|
||||
"router."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:167
|
||||
msgid "UPnP lease file"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:75
|
||||
msgid "Universal Plug & Play"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:60
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:56
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100
|
||||
msgid "Unknown"
|
||||
msgstr "مجهول"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:139
|
||||
msgid "Uplink"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:170
|
||||
msgid "Use STUN"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:137
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:140
|
||||
msgid "Value in KByte/s, informational only"
|
||||
msgstr ""
|
237
package/mtk/applications/luci-app-upnp-mtk-adjust/po/bg/upnp.po
Normal file
237
package/mtk/applications/luci-app-upnp-mtk-adjust/po/bg/upnp.po
Normal file
@ -0,0 +1,237 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-05-19 19:36+0200\n"
|
||||
"PO-Revision-Date: 2024-02-28 14:29+0000\n"
|
||||
"Last-Translator: Boyan Alexiev <nneauu@gmail.com>\n"
|
||||
"Language-Team: Bulgarian <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsupnp/bg/>\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 5.5-dev\n"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182
|
||||
msgid ""
|
||||
"ACLs specify which external ports may be redirected to which internal "
|
||||
"addresses and ports"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202
|
||||
msgid "Action"
|
||||
msgstr "Действие"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:31
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:113
|
||||
msgid "Active UPnP Redirects"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:119
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Разширени настройки"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:131
|
||||
msgid "Advertise as IGDv1 device instead of IGDv2"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:203
|
||||
msgid "Allow"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:128
|
||||
msgid "Allow adding forwards only to requesting ip addresses"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150
|
||||
msgid "Announced model number"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:149
|
||||
msgid "Announced serial number"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160
|
||||
msgid "Clean rules interval"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156
|
||||
msgid "Clean rules threshold"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:45
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:85
|
||||
msgid "Client Address"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:47
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:87
|
||||
msgid "Client Port"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:188
|
||||
msgid "Comment"
|
||||
msgstr "Коментар"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:62
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:106
|
||||
msgid "Delete"
|
||||
msgstr "Изтрий"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:204
|
||||
msgid "Deny"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:48
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:88
|
||||
msgid "Description"
|
||||
msgstr "Описание"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148
|
||||
msgid "Device UUID"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:136
|
||||
msgid "Downlink"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:130
|
||||
msgid "Enable IGDv1 mode"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:125
|
||||
msgid "Enable NAT-PMP functionality"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:124
|
||||
msgid "Enable UPnP functionality"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:133
|
||||
msgid "Enable additional logging"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:127
|
||||
msgid "Enable secure mode"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:44
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:84
|
||||
msgid "External Port"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:190
|
||||
msgid "External ports"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:118
|
||||
msgid "General Settings"
|
||||
msgstr "Общи настройки"
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/rpcd/acl.d/luci-app-upnp.json:3
|
||||
msgid "Grant access to upnp procedures"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:46
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:86
|
||||
msgid "Host"
|
||||
msgstr "Хост"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194
|
||||
msgid "Internal addresses"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:198
|
||||
msgid "Internal ports"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:181
|
||||
msgid "MiniUPnP ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:116
|
||||
msgid "MiniUPnP settings"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:152
|
||||
msgid "Notify interval"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:142
|
||||
msgid "Port"
|
||||
msgstr "Порт"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164
|
||||
msgid "Presentation URL"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:83
|
||||
msgid "Protocol"
|
||||
msgstr "Протокол"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:134
|
||||
msgid "Puts extra debugging information into the system log"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:146
|
||||
msgid "Report system instead of daemon uptime"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172
|
||||
msgid "STUN Host"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:176
|
||||
msgid "STUN Port"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:121
|
||||
msgid "Start UPnP and NAT-PMP service"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:70
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:110
|
||||
msgid "There are no active redirects."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/luci/menu.d/luci-app-upnp.json:3
|
||||
msgid "UPnP"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:76
|
||||
msgid ""
|
||||
"UPnP allows clients in the local network to automatically configure the "
|
||||
"router."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:167
|
||||
msgid "UPnP lease file"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:75
|
||||
msgid "Universal Plug & Play"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:60
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:56
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100
|
||||
msgid "Unknown"
|
||||
msgstr "Неизвестно"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:139
|
||||
msgid "Uplink"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:170
|
||||
msgid "Use STUN"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:137
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:140
|
||||
msgid "Value in KByte/s, informational only"
|
||||
msgstr ""
|
@ -0,0 +1,237 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-05-19 19:36+0200\n"
|
||||
"PO-Revision-Date: 2021-10-08 18:54+0000\n"
|
||||
"Last-Translator: Rayhan Nabi <rayhanjanam@gmail.com>\n"
|
||||
"Language-Team: Bengali (Bangladesh) <https://hosted.weblate.org/projects/"
|
||||
"openwrt/luciapplicationsupnp/bn_BD/>\n"
|
||||
"Language: bn_BD\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.9-dev\n"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182
|
||||
msgid ""
|
||||
"ACLs specify which external ports may be redirected to which internal "
|
||||
"addresses and ports"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202
|
||||
msgid "Action"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:31
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:113
|
||||
msgid "Active UPnP Redirects"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:119
|
||||
msgid "Advanced Settings"
|
||||
msgstr "উন্নত সেটিংস"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:131
|
||||
msgid "Advertise as IGDv1 device instead of IGDv2"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:203
|
||||
msgid "Allow"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:128
|
||||
msgid "Allow adding forwards only to requesting ip addresses"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150
|
||||
msgid "Announced model number"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:149
|
||||
msgid "Announced serial number"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160
|
||||
msgid "Clean rules interval"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156
|
||||
msgid "Clean rules threshold"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:45
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:85
|
||||
msgid "Client Address"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:47
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:87
|
||||
msgid "Client Port"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:188
|
||||
msgid "Comment"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:62
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:106
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:204
|
||||
msgid "Deny"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:48
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:88
|
||||
msgid "Description"
|
||||
msgstr "বর্ণনা"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148
|
||||
msgid "Device UUID"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:136
|
||||
msgid "Downlink"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:130
|
||||
msgid "Enable IGDv1 mode"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:125
|
||||
msgid "Enable NAT-PMP functionality"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:124
|
||||
msgid "Enable UPnP functionality"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:133
|
||||
msgid "Enable additional logging"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:127
|
||||
msgid "Enable secure mode"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:44
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:84
|
||||
msgid "External Port"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:190
|
||||
msgid "External ports"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:118
|
||||
msgid "General Settings"
|
||||
msgstr "সাধারণ সেটিংস"
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/rpcd/acl.d/luci-app-upnp.json:3
|
||||
msgid "Grant access to upnp procedures"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:46
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:86
|
||||
msgid "Host"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194
|
||||
msgid "Internal addresses"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:198
|
||||
msgid "Internal ports"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:181
|
||||
msgid "MiniUPnP ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:116
|
||||
msgid "MiniUPnP settings"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:152
|
||||
msgid "Notify interval"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:142
|
||||
msgid "Port"
|
||||
msgstr "পোর্ট"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164
|
||||
msgid "Presentation URL"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:83
|
||||
msgid "Protocol"
|
||||
msgstr "প্রোটোকল"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:134
|
||||
msgid "Puts extra debugging information into the system log"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:146
|
||||
msgid "Report system instead of daemon uptime"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172
|
||||
msgid "STUN Host"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:176
|
||||
msgid "STUN Port"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:121
|
||||
msgid "Start UPnP and NAT-PMP service"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:70
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:110
|
||||
msgid "There are no active redirects."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/luci/menu.d/luci-app-upnp.json:3
|
||||
msgid "UPnP"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:76
|
||||
msgid ""
|
||||
"UPnP allows clients in the local network to automatically configure the "
|
||||
"router."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:167
|
||||
msgid "UPnP lease file"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:75
|
||||
msgid "Universal Plug & Play"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:60
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:56
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100
|
||||
msgid "Unknown"
|
||||
msgstr "অজানা"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:139
|
||||
msgid "Uplink"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:170
|
||||
msgid "Use STUN"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:137
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:140
|
||||
msgid "Value in KByte/s, informational only"
|
||||
msgstr ""
|
243
package/mtk/applications/luci-app-upnp-mtk-adjust/po/ca/upnp.po
Normal file
243
package/mtk/applications/luci-app-upnp-mtk-adjust/po/ca/upnp.po
Normal file
@ -0,0 +1,243 @@
|
||||
# upnp.pot
|
||||
# generated from ./applications/luci-upnp/luasrc/i18n/upnp.en.lua
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-06-10 03:40+0200\n"
|
||||
"PO-Revision-Date: 2021-09-17 06:52+0000\n"
|
||||
"Last-Translator: Roger Pueyo Centelles <weblate@rogerpueyo.com>\n"
|
||||
"Language-Team: Catalan <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsupnp/ca/>\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 4.9-dev\n"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182
|
||||
msgid ""
|
||||
"ACLs specify which external ports may be redirected to which internal "
|
||||
"addresses and ports"
|
||||
msgstr ""
|
||||
"Els ACL especifiquen quins ports externs es poden redirigir a quines adreces "
|
||||
"i ports interns"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202
|
||||
msgid "Action"
|
||||
msgstr "Acció"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:31
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:113
|
||||
msgid "Active UPnP Redirects"
|
||||
msgstr "Redireccions UPnP actives"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:119
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Configuració avançada"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:131
|
||||
msgid "Advertise as IGDv1 device instead of IGDv2"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:203
|
||||
msgid "Allow"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:128
|
||||
msgid "Allow adding forwards only to requesting ip addresses"
|
||||
msgstr "Permet que s'afegeixin redireccions només a les adreces IP peticionant"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150
|
||||
msgid "Announced model number"
|
||||
msgstr "Número de model anunciat"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:149
|
||||
msgid "Announced serial number"
|
||||
msgstr "Número de sèrie anunciat"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160
|
||||
msgid "Clean rules interval"
|
||||
msgstr "Interval de neteja de regles"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156
|
||||
msgid "Clean rules threshold"
|
||||
msgstr "Llindar de neteja de regles"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:45
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:85
|
||||
msgid "Client Address"
|
||||
msgstr "Adreça de client"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:47
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:87
|
||||
msgid "Client Port"
|
||||
msgstr "Port de client"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:188
|
||||
msgid "Comment"
|
||||
msgstr "Commentari"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:62
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:106
|
||||
msgid "Delete"
|
||||
msgstr "Suprimeix"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:204
|
||||
msgid "Deny"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:48
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:88
|
||||
msgid "Description"
|
||||
msgstr "Descripció"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148
|
||||
msgid "Device UUID"
|
||||
msgstr "UUID de dispositiu"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:136
|
||||
msgid "Downlink"
|
||||
msgstr "Enllaç de baixada"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:130
|
||||
msgid "Enable IGDv1 mode"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:125
|
||||
msgid "Enable NAT-PMP functionality"
|
||||
msgstr "Habilita la funcionalitat NAT-PMP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:124
|
||||
msgid "Enable UPnP functionality"
|
||||
msgstr "Habilita la funcionalitat UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:133
|
||||
msgid "Enable additional logging"
|
||||
msgstr "Habilita el registre addicional"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:127
|
||||
msgid "Enable secure mode"
|
||||
msgstr "Habilita mode segur"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:44
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:84
|
||||
msgid "External Port"
|
||||
msgstr "Port extern"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:190
|
||||
msgid "External ports"
|
||||
msgstr "Ports externs"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:118
|
||||
msgid "General Settings"
|
||||
msgstr "Paràmetres generals"
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/rpcd/acl.d/luci-app-upnp.json:3
|
||||
msgid "Grant access to upnp procedures"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:46
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:86
|
||||
msgid "Host"
|
||||
msgstr "Amfitrió"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194
|
||||
msgid "Internal addresses"
|
||||
msgstr "Adreces internes"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:198
|
||||
msgid "Internal ports"
|
||||
msgstr "Ports interns"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:181
|
||||
msgid "MiniUPnP ACLs"
|
||||
msgstr "ACLs de MiniUPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:116
|
||||
msgid "MiniUPnP settings"
|
||||
msgstr "Ajusts de MiniUPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:152
|
||||
msgid "Notify interval"
|
||||
msgstr "Interval de notificació"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:142
|
||||
msgid "Port"
|
||||
msgstr "Port"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164
|
||||
msgid "Presentation URL"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:83
|
||||
msgid "Protocol"
|
||||
msgstr "Protocol"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:134
|
||||
msgid "Puts extra debugging information into the system log"
|
||||
msgstr "Posa informació extra de depuració en el registre de sistema"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:146
|
||||
msgid "Report system instead of daemon uptime"
|
||||
msgstr "Reporta el temps actiu del sistema en lloc del del dimoni"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172
|
||||
msgid "STUN Host"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:176
|
||||
msgid "STUN Port"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:121
|
||||
msgid "Start UPnP and NAT-PMP service"
|
||||
msgstr "Inicia el servei UPnP i NAP-PMP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:70
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:110
|
||||
msgid "There are no active redirects."
|
||||
msgstr "No hi ha redireccions actives."
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/luci/menu.d/luci-app-upnp.json:3
|
||||
msgid "UPnP"
|
||||
msgstr "UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:76
|
||||
msgid ""
|
||||
"UPnP allows clients in the local network to automatically configure the "
|
||||
"router."
|
||||
msgstr ""
|
||||
"UPnP permet als clients de la xarxa local configurar automàticament el "
|
||||
"router."
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:167
|
||||
msgid "UPnP lease file"
|
||||
msgstr "Fitxer d'arrendament UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:75
|
||||
msgid "Universal Plug & Play"
|
||||
msgstr "Universal Plug & Play"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:60
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:56
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100
|
||||
msgid "Unknown"
|
||||
msgstr "Desconegut"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:139
|
||||
msgid "Uplink"
|
||||
msgstr "Enllaç de pujada"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:170
|
||||
msgid "Use STUN"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:137
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:140
|
||||
msgid "Value in KByte/s, informational only"
|
||||
msgstr "Valor en KByte/s, només per informació"
|
238
package/mtk/applications/luci-app-upnp-mtk-adjust/po/cs/upnp.po
Normal file
238
package/mtk/applications/luci-app-upnp-mtk-adjust/po/cs/upnp.po
Normal file
@ -0,0 +1,238 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"PO-Revision-Date: 2024-07-08 22:10+0000\n"
|
||||
"Last-Translator: Milan <cirhanmilan@seznam.cz>\n"
|
||||
"Language-Team: Czech <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsupnp/cs/>\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 5.7-dev\n"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182
|
||||
msgid ""
|
||||
"ACLs specify which external ports may be redirected to which internal "
|
||||
"addresses and ports"
|
||||
msgstr ""
|
||||
"ACL stanovují, které vnější porty by měly být přesměrovány na které vnitřní "
|
||||
"adresy a porty"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202
|
||||
msgid "Action"
|
||||
msgstr "Akce"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:31
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:113
|
||||
msgid "Active UPnP Redirects"
|
||||
msgstr "Aktivní přesměrování UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:119
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Pokročilé možnosti"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:131
|
||||
msgid "Advertise as IGDv1 device instead of IGDv2"
|
||||
msgstr "Inzerovat jako IGDv1 zařízení místo IGDv2"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:203
|
||||
msgid "Allow"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:128
|
||||
msgid "Allow adding forwards only to requesting ip addresses"
|
||||
msgstr "Povolit přesměrování pouze na dotazující ip adresy"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150
|
||||
msgid "Announced model number"
|
||||
msgstr "Oznámené číslo modelu"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:149
|
||||
msgid "Announced serial number"
|
||||
msgstr "Oznámené sériové číslo"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160
|
||||
msgid "Clean rules interval"
|
||||
msgstr "Interval čištění pravidel"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156
|
||||
msgid "Clean rules threshold"
|
||||
msgstr "Práh čištění pravidel"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:45
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:85
|
||||
msgid "Client Address"
|
||||
msgstr "Adresa klienta"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:47
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:87
|
||||
msgid "Client Port"
|
||||
msgstr "Port klienta"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:188
|
||||
msgid "Comment"
|
||||
msgstr "Komentář"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:62
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:106
|
||||
msgid "Delete"
|
||||
msgstr "Odstranit"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:204
|
||||
msgid "Deny"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:48
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:88
|
||||
msgid "Description"
|
||||
msgstr "Popis"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148
|
||||
msgid "Device UUID"
|
||||
msgstr "UUID zařízení"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:136
|
||||
msgid "Downlink"
|
||||
msgstr "Downlink"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:130
|
||||
msgid "Enable IGDv1 mode"
|
||||
msgstr "Povolit režim IGDv1"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:125
|
||||
msgid "Enable NAT-PMP functionality"
|
||||
msgstr "Povolit funkčnost NAT-PMP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:124
|
||||
msgid "Enable UPnP functionality"
|
||||
msgstr "Povolit funkčnost UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:133
|
||||
msgid "Enable additional logging"
|
||||
msgstr "Povolit přídavné logování"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:127
|
||||
msgid "Enable secure mode"
|
||||
msgstr "Povolit bezpečný režim"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:44
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:84
|
||||
msgid "External Port"
|
||||
msgstr "Vnější port"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:190
|
||||
msgid "External ports"
|
||||
msgstr "Vnější porty"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:118
|
||||
msgid "General Settings"
|
||||
msgstr "Obecná nastavení"
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/rpcd/acl.d/luci-app-upnp.json:3
|
||||
msgid "Grant access to upnp procedures"
|
||||
msgstr "Udělit oprávnění k procedůrám upnp"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:46
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:86
|
||||
msgid "Host"
|
||||
msgstr "Hostitel"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194
|
||||
msgid "Internal addresses"
|
||||
msgstr "Vnitřní adresy"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:198
|
||||
msgid "Internal ports"
|
||||
msgstr "Vnitřní porty"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:181
|
||||
msgid "MiniUPnP ACLs"
|
||||
msgstr "MiniUPnP ACL listy"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:116
|
||||
msgid "MiniUPnP settings"
|
||||
msgstr "Nastavení MiniUPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:152
|
||||
msgid "Notify interval"
|
||||
msgstr "Interval oznamování"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:142
|
||||
msgid "Port"
|
||||
msgstr "Port"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164
|
||||
msgid "Presentation URL"
|
||||
msgstr "Prezentační URL"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:83
|
||||
msgid "Protocol"
|
||||
msgstr "Protokol"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:134
|
||||
msgid "Puts extra debugging information into the system log"
|
||||
msgstr "Vypisovat extra ladící informace do systémového záznamu"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:146
|
||||
msgid "Report system instead of daemon uptime"
|
||||
msgstr "Hlásit uptime systému namísto uptime daemonu"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172
|
||||
msgid "STUN Host"
|
||||
msgstr "STUN Hostitel"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:176
|
||||
msgid "STUN Port"
|
||||
msgstr "STUN Port"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:121
|
||||
msgid "Start UPnP and NAT-PMP service"
|
||||
msgstr "Spustit službu UPnP a NAT-PMP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:70
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:110
|
||||
msgid "There are no active redirects."
|
||||
msgstr "Neexistují žádná aktivní přesměrování."
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/luci/menu.d/luci-app-upnp.json:3
|
||||
msgid "UPnP"
|
||||
msgstr "UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:76
|
||||
msgid ""
|
||||
"UPnP allows clients in the local network to automatically configure the "
|
||||
"router."
|
||||
msgstr ""
|
||||
"UPnP umožňuje klientům v místní síti automaticky nakonfigurovat router."
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:167
|
||||
msgid "UPnP lease file"
|
||||
msgstr "Soubor UPnP výpůjček"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:75
|
||||
msgid "Universal Plug & Play"
|
||||
msgstr "Univerzální Plug & Play"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:60
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:56
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100
|
||||
msgid "Unknown"
|
||||
msgstr "Neznámé"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:139
|
||||
msgid "Uplink"
|
||||
msgstr "Uplink"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:170
|
||||
msgid "Use STUN"
|
||||
msgstr "Použít STUN"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:137
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:140
|
||||
msgid "Value in KByte/s, informational only"
|
||||
msgstr "Pouze informační hodnoty (v KByte/s)"
|
241
package/mtk/applications/luci-app-upnp-mtk-adjust/po/da/upnp.po
Normal file
241
package/mtk/applications/luci-app-upnp-mtk-adjust/po/da/upnp.po
Normal file
@ -0,0 +1,241 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-05-19 19:36+0200\n"
|
||||
"PO-Revision-Date: 2021-11-13 08:12+0000\n"
|
||||
"Last-Translator: drax red <drax@outlook.dk>\n"
|
||||
"Language-Team: Danish <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsupnp/da/>\n"
|
||||
"Language: da\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.9.1-dev\n"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182
|
||||
msgid ""
|
||||
"ACLs specify which external ports may be redirected to which internal "
|
||||
"addresses and ports"
|
||||
msgstr ""
|
||||
"ACL'er angiver, hvilke eksterne porte der kan omdirigeres til hvilke interne "
|
||||
"adresser og porte"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202
|
||||
msgid "Action"
|
||||
msgstr "Handling"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:31
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:113
|
||||
msgid "Active UPnP Redirects"
|
||||
msgstr "Aktive UPnP-omdirigeringer"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:119
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Avancerede indstillinger"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:131
|
||||
msgid "Advertise as IGDv1 device instead of IGDv2"
|
||||
msgstr "Annoncerer som IGDv1-enhed i stedet for IGDv2"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:203
|
||||
msgid "Allow"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:128
|
||||
msgid "Allow adding forwards only to requesting ip addresses"
|
||||
msgstr "Tillad kun at tilføje viderestillinger til ip-adresser, der anmoder om"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150
|
||||
msgid "Announced model number"
|
||||
msgstr "Annonceret modelnummer"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:149
|
||||
msgid "Announced serial number"
|
||||
msgstr "Annonceret serienummer"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160
|
||||
msgid "Clean rules interval"
|
||||
msgstr "Interval for rene regler"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156
|
||||
msgid "Clean rules threshold"
|
||||
msgstr "Tærskel for rene regler"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:45
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:85
|
||||
msgid "Client Address"
|
||||
msgstr "Klient adresse"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:47
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:87
|
||||
msgid "Client Port"
|
||||
msgstr "Klient port"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:188
|
||||
msgid "Comment"
|
||||
msgstr "Kommentar"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:62
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:106
|
||||
msgid "Delete"
|
||||
msgstr "Slet"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:204
|
||||
msgid "Deny"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:48
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:88
|
||||
msgid "Description"
|
||||
msgstr "Beskrivelse"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148
|
||||
msgid "Device UUID"
|
||||
msgstr "Enhedens UUID"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:136
|
||||
msgid "Downlink"
|
||||
msgstr "Downlink"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:130
|
||||
msgid "Enable IGDv1 mode"
|
||||
msgstr "Aktiver IGDv1-tilstand"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:125
|
||||
msgid "Enable NAT-PMP functionality"
|
||||
msgstr "Aktiver NAT-PMP-funktionalitet"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:124
|
||||
msgid "Enable UPnP functionality"
|
||||
msgstr "Aktiver UPnP-funktionalitet"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:133
|
||||
msgid "Enable additional logging"
|
||||
msgstr "Aktiver yderligere logning"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:127
|
||||
msgid "Enable secure mode"
|
||||
msgstr "Aktiver sikker tilstand"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:44
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:84
|
||||
msgid "External Port"
|
||||
msgstr "Ekstern port"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:190
|
||||
msgid "External ports"
|
||||
msgstr "Eksterne porte"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:118
|
||||
msgid "General Settings"
|
||||
msgstr "Generelle indstillinger"
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/rpcd/acl.d/luci-app-upnp.json:3
|
||||
msgid "Grant access to upnp procedures"
|
||||
msgstr "Giv adgang til upnp-procedurer"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:46
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:86
|
||||
msgid "Host"
|
||||
msgstr "Vært"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194
|
||||
msgid "Internal addresses"
|
||||
msgstr "Interne adresser"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:198
|
||||
msgid "Internal ports"
|
||||
msgstr "Interne porte"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:181
|
||||
msgid "MiniUPnP ACLs"
|
||||
msgstr "MiniUPnP ACL'er"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:116
|
||||
msgid "MiniUPnP settings"
|
||||
msgstr "MiniUPnP-indstillinger"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:152
|
||||
msgid "Notify interval"
|
||||
msgstr "Underretningsinterval"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:142
|
||||
msgid "Port"
|
||||
msgstr "Port"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164
|
||||
msgid "Presentation URL"
|
||||
msgstr "URL til præsentation"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:83
|
||||
msgid "Protocol"
|
||||
msgstr "Protokol"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:134
|
||||
msgid "Puts extra debugging information into the system log"
|
||||
msgstr "Sætter ekstra fejlfindingsoplysninger i systemloggen"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:146
|
||||
msgid "Report system instead of daemon uptime"
|
||||
msgstr "Rapportere system i stedet for dæmonens oppetid"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172
|
||||
msgid "STUN Host"
|
||||
msgstr "STUN vært"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:176
|
||||
msgid "STUN Port"
|
||||
msgstr "STUN Port"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:121
|
||||
msgid "Start UPnP and NAT-PMP service"
|
||||
msgstr "Start UPnP- og NAT-PMP-tjenesten"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:70
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:110
|
||||
msgid "There are no active redirects."
|
||||
msgstr "Der er ingen aktive omdirigeringer."
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/luci/menu.d/luci-app-upnp.json:3
|
||||
msgid "UPnP"
|
||||
msgstr "UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:76
|
||||
msgid ""
|
||||
"UPnP allows clients in the local network to automatically configure the "
|
||||
"router."
|
||||
msgstr ""
|
||||
"UPnP gør det muligt for klienter i det lokale netværk at konfigurere "
|
||||
"routeren automatisk."
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:167
|
||||
msgid "UPnP lease file"
|
||||
msgstr "UPnP-lease-fil"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:75
|
||||
msgid "Universal Plug & Play"
|
||||
msgstr "Universelt plug &play"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:60
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:56
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100
|
||||
msgid "Unknown"
|
||||
msgstr "Ukendt"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:139
|
||||
msgid "Uplink"
|
||||
msgstr "Uplink"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:170
|
||||
msgid "Use STUN"
|
||||
msgstr "Brug STUN"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:137
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:140
|
||||
msgid "Value in KByte/s, informational only"
|
||||
msgstr "Værdi i KByte/s, kun til information"
|
241
package/mtk/applications/luci-app-upnp-mtk-adjust/po/de/upnp.po
Normal file
241
package/mtk/applications/luci-app-upnp-mtk-adjust/po/de/upnp.po
Normal file
@ -0,0 +1,241 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-05-26 17:57+0200\n"
|
||||
"PO-Revision-Date: 2024-02-09 17:28+0000\n"
|
||||
"Last-Translator: ssantos <ssantos@web.de>\n"
|
||||
"Language-Team: German <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsupnp/de/>\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 5.4-dev\n"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182
|
||||
msgid ""
|
||||
"ACLs specify which external ports may be redirected to which internal "
|
||||
"addresses and ports"
|
||||
msgstr ""
|
||||
"ACLs definieren, welche externen Ports zu welchen internen Adressen und "
|
||||
"Ports weitergeleitet werden dürfen"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202
|
||||
msgid "Action"
|
||||
msgstr "Aktion"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:31
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:113
|
||||
msgid "Active UPnP Redirects"
|
||||
msgstr "Aktive UPnP-Weiterleitungen"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:119
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Erweiterte Einstellungen"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:131
|
||||
msgid "Advertise as IGDv1 device instead of IGDv2"
|
||||
msgstr "Als IGDv1-Gerät anstelle von IGDv2 bekanntgeben"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:203
|
||||
msgid "Allow"
|
||||
msgstr "Erlauben"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:128
|
||||
msgid "Allow adding forwards only to requesting ip addresses"
|
||||
msgstr "Nur Weiterleitungen zurück zum anfordernden Client zulassen"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150
|
||||
msgid "Announced model number"
|
||||
msgstr "Angekündigte Modellnummer"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:149
|
||||
msgid "Announced serial number"
|
||||
msgstr "Angekündigte Seriennummer"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160
|
||||
msgid "Clean rules interval"
|
||||
msgstr "Aufräumintervall für Weiterleitungen"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156
|
||||
msgid "Clean rules threshold"
|
||||
msgstr "Aufräumschwellenwert für Weiterleitungen"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:45
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:85
|
||||
msgid "Client Address"
|
||||
msgstr "Clientadresse"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:47
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:87
|
||||
msgid "Client Port"
|
||||
msgstr "Clientport"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:188
|
||||
msgid "Comment"
|
||||
msgstr "Kommentar"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:62
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:106
|
||||
msgid "Delete"
|
||||
msgstr "Löschen"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:204
|
||||
msgid "Deny"
|
||||
msgstr "Ablehnen"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:48
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:88
|
||||
msgid "Description"
|
||||
msgstr "Beschreibung"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148
|
||||
msgid "Device UUID"
|
||||
msgstr "Geräte-UUID"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:136
|
||||
msgid "Downlink"
|
||||
msgstr "Download-Bandbreite"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:130
|
||||
msgid "Enable IGDv1 mode"
|
||||
msgstr "IGDv1 Modus aktivieren"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:125
|
||||
msgid "Enable NAT-PMP functionality"
|
||||
msgstr "NAT-PMP Funktionalität aktivieren"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:124
|
||||
msgid "Enable UPnP functionality"
|
||||
msgstr "UPnP Funktionalität aktivieren"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:133
|
||||
msgid "Enable additional logging"
|
||||
msgstr "Erweiterte Protokollierung aktivieren"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:127
|
||||
msgid "Enable secure mode"
|
||||
msgstr "Sicheren Modus aktivieren"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:44
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:84
|
||||
msgid "External Port"
|
||||
msgstr "Externer Port"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:190
|
||||
msgid "External ports"
|
||||
msgstr "Externe Ports"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:118
|
||||
msgid "General Settings"
|
||||
msgstr "Allgemeine Einstellungen"
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/rpcd/acl.d/luci-app-upnp.json:3
|
||||
msgid "Grant access to upnp procedures"
|
||||
msgstr "Zugriff auf UPNP-Prozeduren gewähren"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:46
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:86
|
||||
msgid "Host"
|
||||
msgstr "Host"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194
|
||||
msgid "Internal addresses"
|
||||
msgstr "Interne Adressen"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:198
|
||||
msgid "Internal ports"
|
||||
msgstr "Interne Ports"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:181
|
||||
msgid "MiniUPnP ACLs"
|
||||
msgstr "ACLs der MiniUPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:116
|
||||
msgid "MiniUPnP settings"
|
||||
msgstr "MiniUPnP-Einstellungen"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:152
|
||||
msgid "Notify interval"
|
||||
msgstr "Benachrichtigungsintervall"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:142
|
||||
msgid "Port"
|
||||
msgstr "Port"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164
|
||||
msgid "Presentation URL"
|
||||
msgstr "Präsentations-URL"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:83
|
||||
msgid "Protocol"
|
||||
msgstr "Protokoll"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:134
|
||||
msgid "Puts extra debugging information into the system log"
|
||||
msgstr "Schreibt zusätzliche Debug-Informationen in das Systemprotokoll"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:146
|
||||
msgid "Report system instead of daemon uptime"
|
||||
msgstr "Systemlaufzeit statt Prozesslaufzeit melden"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172
|
||||
msgid "STUN Host"
|
||||
msgstr "STUN-Host"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:176
|
||||
msgid "STUN Port"
|
||||
msgstr "STUN-Port"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:121
|
||||
msgid "Start UPnP and NAT-PMP service"
|
||||
msgstr "UPnP und NAT-PMP Dienst starten"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:70
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:110
|
||||
msgid "There are no active redirects."
|
||||
msgstr "Es gibt keine aktiven Weiterleitungen."
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/luci/menu.d/luci-app-upnp.json:3
|
||||
msgid "UPnP"
|
||||
msgstr "UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:76
|
||||
msgid ""
|
||||
"UPnP allows clients in the local network to automatically configure the "
|
||||
"router."
|
||||
msgstr ""
|
||||
"UPnP erlaubt es Clients im lokalen Netzwerk automatisch Port-Weiterleitungen "
|
||||
"auf diesem Router einzurichten."
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:167
|
||||
msgid "UPnP lease file"
|
||||
msgstr "UPnP Lease-Datei"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:75
|
||||
msgid "Universal Plug & Play"
|
||||
msgstr "Universal Plug & Play"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:60
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:56
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100
|
||||
msgid "Unknown"
|
||||
msgstr "Unbekannt"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:139
|
||||
msgid "Uplink"
|
||||
msgstr "Uplink"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:170
|
||||
msgid "Use STUN"
|
||||
msgstr "STUN verwenden"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:137
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:140
|
||||
msgid "Value in KByte/s, informational only"
|
||||
msgstr "Wert in Kilobyte/s, nur informativ"
|
237
package/mtk/applications/luci-app-upnp-mtk-adjust/po/el/upnp.po
Normal file
237
package/mtk/applications/luci-app-upnp-mtk-adjust/po/el/upnp.po
Normal file
@ -0,0 +1,237 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-05-28 02:08+0200\n"
|
||||
"PO-Revision-Date: 2022-10-03 08:34+0000\n"
|
||||
"Last-Translator: TakissX <pxatzidakis@gmail.com>\n"
|
||||
"Language-Team: Greek <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsupnp/el/>\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 4.14.1\n"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182
|
||||
msgid ""
|
||||
"ACLs specify which external ports may be redirected to which internal "
|
||||
"addresses and ports"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202
|
||||
msgid "Action"
|
||||
msgstr "Δράση"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:31
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:113
|
||||
msgid "Active UPnP Redirects"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:119
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Ρυθμίσεις για προχωρημένους"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:131
|
||||
msgid "Advertise as IGDv1 device instead of IGDv2"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:203
|
||||
msgid "Allow"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:128
|
||||
msgid "Allow adding forwards only to requesting ip addresses"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150
|
||||
msgid "Announced model number"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:149
|
||||
msgid "Announced serial number"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160
|
||||
msgid "Clean rules interval"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156
|
||||
msgid "Clean rules threshold"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:45
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:85
|
||||
msgid "Client Address"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:47
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:87
|
||||
msgid "Client Port"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:188
|
||||
msgid "Comment"
|
||||
msgstr "Σχόλιο"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:62
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:106
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:204
|
||||
msgid "Deny"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:48
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:88
|
||||
msgid "Description"
|
||||
msgstr "Περιγραφή"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148
|
||||
msgid "Device UUID"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:136
|
||||
msgid "Downlink"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:130
|
||||
msgid "Enable IGDv1 mode"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:125
|
||||
msgid "Enable NAT-PMP functionality"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:124
|
||||
msgid "Enable UPnP functionality"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:133
|
||||
msgid "Enable additional logging"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:127
|
||||
msgid "Enable secure mode"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:44
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:84
|
||||
msgid "External Port"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:190
|
||||
msgid "External ports"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:118
|
||||
msgid "General Settings"
|
||||
msgstr "Γενικές ρυθμίσεις"
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/rpcd/acl.d/luci-app-upnp.json:3
|
||||
msgid "Grant access to upnp procedures"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:46
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:86
|
||||
msgid "Host"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194
|
||||
msgid "Internal addresses"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:198
|
||||
msgid "Internal ports"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:181
|
||||
msgid "MiniUPnP ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:116
|
||||
msgid "MiniUPnP settings"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:152
|
||||
msgid "Notify interval"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:142
|
||||
msgid "Port"
|
||||
msgstr "Θύρα"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164
|
||||
msgid "Presentation URL"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:83
|
||||
msgid "Protocol"
|
||||
msgstr "Πρωτόκολλο"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:134
|
||||
msgid "Puts extra debugging information into the system log"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:146
|
||||
msgid "Report system instead of daemon uptime"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172
|
||||
msgid "STUN Host"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:176
|
||||
msgid "STUN Port"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:121
|
||||
msgid "Start UPnP and NAT-PMP service"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:70
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:110
|
||||
msgid "There are no active redirects."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/luci/menu.d/luci-app-upnp.json:3
|
||||
msgid "UPnP"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:76
|
||||
msgid ""
|
||||
"UPnP allows clients in the local network to automatically configure the "
|
||||
"router."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:167
|
||||
msgid "UPnP lease file"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:75
|
||||
msgid "Universal Plug & Play"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:60
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:56
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100
|
||||
msgid "Unknown"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:139
|
||||
msgid "Uplink"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:170
|
||||
msgid "Use STUN"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:137
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:140
|
||||
msgid "Value in KByte/s, informational only"
|
||||
msgstr ""
|
237
package/mtk/applications/luci-app-upnp-mtk-adjust/po/en/upnp.po
Normal file
237
package/mtk/applications/luci-app-upnp-mtk-adjust/po/en/upnp.po
Normal file
@ -0,0 +1,237 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-05-19 19:36+0200\n"
|
||||
"PO-Revision-Date: 2023-11-30 14:34+0000\n"
|
||||
"Last-Translator: rygle <pittos@post.com>\n"
|
||||
"Language-Team: English <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsupnp/en/>\n"
|
||||
"Language: en\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 5.3-dev\n"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182
|
||||
msgid ""
|
||||
"ACLs specify which external ports may be redirected to which internal "
|
||||
"addresses and ports"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202
|
||||
msgid "Action"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:31
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:113
|
||||
msgid "Active UPnP Redirects"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:119
|
||||
msgid "Advanced Settings"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:131
|
||||
msgid "Advertise as IGDv1 device instead of IGDv2"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:203
|
||||
msgid "Allow"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:128
|
||||
msgid "Allow adding forwards only to requesting ip addresses"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150
|
||||
msgid "Announced model number"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:149
|
||||
msgid "Announced serial number"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160
|
||||
msgid "Clean rules interval"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156
|
||||
msgid "Clean rules threshold"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:45
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:85
|
||||
msgid "Client Address"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:47
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:87
|
||||
msgid "Client Port"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:188
|
||||
msgid "Comment"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:62
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:106
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:204
|
||||
msgid "Deny"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:48
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:88
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148
|
||||
msgid "Device UUID"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:136
|
||||
msgid "Downlink"
|
||||
msgstr "Downlink"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:130
|
||||
msgid "Enable IGDv1 mode"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:125
|
||||
msgid "Enable NAT-PMP functionality"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:124
|
||||
msgid "Enable UPnP functionality"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:133
|
||||
msgid "Enable additional logging"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:127
|
||||
msgid "Enable secure mode"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:44
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:84
|
||||
msgid "External Port"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:190
|
||||
msgid "External ports"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:118
|
||||
msgid "General Settings"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/rpcd/acl.d/luci-app-upnp.json:3
|
||||
msgid "Grant access to upnp procedures"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:46
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:86
|
||||
msgid "Host"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194
|
||||
msgid "Internal addresses"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:198
|
||||
msgid "Internal ports"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:181
|
||||
msgid "MiniUPnP ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:116
|
||||
msgid "MiniUPnP settings"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:152
|
||||
msgid "Notify interval"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:142
|
||||
msgid "Port"
|
||||
msgstr "Port"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164
|
||||
msgid "Presentation URL"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:83
|
||||
msgid "Protocol"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:134
|
||||
msgid "Puts extra debugging information into the system log"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:146
|
||||
msgid "Report system instead of daemon uptime"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172
|
||||
msgid "STUN Host"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:176
|
||||
msgid "STUN Port"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:121
|
||||
msgid "Start UPnP and NAT-PMP service"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:70
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:110
|
||||
msgid "There are no active redirects."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/luci/menu.d/luci-app-upnp.json:3
|
||||
msgid "UPnP"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:76
|
||||
msgid ""
|
||||
"UPnP allows clients in the local network to automatically configure the "
|
||||
"router."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:167
|
||||
msgid "UPnP lease file"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:75
|
||||
msgid "Universal Plug & Play"
|
||||
msgstr "Universal Plug & Play"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:60
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:56
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100
|
||||
msgid "Unknown"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:139
|
||||
msgid "Uplink"
|
||||
msgstr "Uplink"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:170
|
||||
msgid "Use STUN"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:137
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:140
|
||||
msgid "Value in KByte/s, informational only"
|
||||
msgstr ""
|
241
package/mtk/applications/luci-app-upnp-mtk-adjust/po/es/upnp.po
Normal file
241
package/mtk/applications/luci-app-upnp-mtk-adjust/po/es/upnp.po
Normal file
@ -0,0 +1,241 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-06-10 03:41+0200\n"
|
||||
"PO-Revision-Date: 2024-07-24 18:07+0000\n"
|
||||
"Last-Translator: brodrigueznu <brodrigueznu@hotmail.com>\n"
|
||||
"Language-Team: Spanish <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsupnp/es/>\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 5.7-dev\n"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182
|
||||
msgid ""
|
||||
"ACLs specify which external ports may be redirected to which internal "
|
||||
"addresses and ports"
|
||||
msgstr ""
|
||||
"Los ACL especifican qué puertos externos pueden ser redirigidos hacia qué "
|
||||
"direcciones y puertos internos"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202
|
||||
msgid "Action"
|
||||
msgstr "Acción"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:31
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:113
|
||||
msgid "Active UPnP Redirects"
|
||||
msgstr "Redirecciones UPnP activas"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:119
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Ajustes Avanzados"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:131
|
||||
msgid "Advertise as IGDv1 device instead of IGDv2"
|
||||
msgstr "Anunciarse como dispositivo IGDv1 en lugar de IGDv2"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:203
|
||||
msgid "Allow"
|
||||
msgstr "Permitir"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:128
|
||||
msgid "Allow adding forwards only to requesting ip addresses"
|
||||
msgstr "Permitir añadir redirecciones sólo a IPs que lo soliciten"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150
|
||||
msgid "Announced model number"
|
||||
msgstr "Número de modelo anunciado"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:149
|
||||
msgid "Announced serial number"
|
||||
msgstr "Número de serie anunciado"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160
|
||||
msgid "Clean rules interval"
|
||||
msgstr "Intervalo de borrado de reglas"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156
|
||||
msgid "Clean rules threshold"
|
||||
msgstr "Umbral de borrado de reglas"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:45
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:85
|
||||
msgid "Client Address"
|
||||
msgstr "Dirección del cliente"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:47
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:87
|
||||
msgid "Client Port"
|
||||
msgstr "Puerto del cliente"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:188
|
||||
msgid "Comment"
|
||||
msgstr "Comentario"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:62
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:106
|
||||
msgid "Delete"
|
||||
msgstr "Eliminar"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:204
|
||||
msgid "Deny"
|
||||
msgstr "Denegar"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:48
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:88
|
||||
msgid "Description"
|
||||
msgstr "Descripción"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148
|
||||
msgid "Device UUID"
|
||||
msgstr "UUID del dispositivo"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:136
|
||||
msgid "Downlink"
|
||||
msgstr "Enlace descendente"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:130
|
||||
msgid "Enable IGDv1 mode"
|
||||
msgstr "Activar modo IGDv1"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:125
|
||||
msgid "Enable NAT-PMP functionality"
|
||||
msgstr "Activar la funcionalidad NAT-PMP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:124
|
||||
msgid "Enable UPnP functionality"
|
||||
msgstr "Activar la funcionalidad UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:133
|
||||
msgid "Enable additional logging"
|
||||
msgstr "Activar registro adicional"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:127
|
||||
msgid "Enable secure mode"
|
||||
msgstr "Activar modo seguro"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:44
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:84
|
||||
msgid "External Port"
|
||||
msgstr "Puerto externo"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:190
|
||||
msgid "External ports"
|
||||
msgstr "Puertos externos"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:118
|
||||
msgid "General Settings"
|
||||
msgstr "Ajustes generales"
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/rpcd/acl.d/luci-app-upnp.json:3
|
||||
msgid "Grant access to upnp procedures"
|
||||
msgstr "Conceder acceso a los procedimientos de upnp"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:46
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:86
|
||||
msgid "Host"
|
||||
msgstr "Host"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194
|
||||
msgid "Internal addresses"
|
||||
msgstr "Direcciones internas"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:198
|
||||
msgid "Internal ports"
|
||||
msgstr "Puertos internos"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:181
|
||||
msgid "MiniUPnP ACLs"
|
||||
msgstr "ACLs MiniUPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:116
|
||||
msgid "MiniUPnP settings"
|
||||
msgstr "Configuración MiniUPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:152
|
||||
msgid "Notify interval"
|
||||
msgstr "Intervalo de notificación"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:142
|
||||
msgid "Port"
|
||||
msgstr "Puerto"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164
|
||||
msgid "Presentation URL"
|
||||
msgstr "URL de presentación"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:83
|
||||
msgid "Protocol"
|
||||
msgstr "Protocolo"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:134
|
||||
msgid "Puts extra debugging information into the system log"
|
||||
msgstr "Coloca información de depuración adicional en el registro del sistema"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:146
|
||||
msgid "Report system instead of daemon uptime"
|
||||
msgstr "Informar del tiempo activo del sistema en vez de el del demonio"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172
|
||||
msgid "STUN Host"
|
||||
msgstr "Host STUN"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:176
|
||||
msgid "STUN Port"
|
||||
msgstr "Puerto STUN"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:121
|
||||
msgid "Start UPnP and NAT-PMP service"
|
||||
msgstr "Iniciar servicio UPnP y NAT-PMP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:70
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:110
|
||||
msgid "There are no active redirects."
|
||||
msgstr "Sin redirecciones activas."
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/luci/menu.d/luci-app-upnp.json:3
|
||||
msgid "UPnP"
|
||||
msgstr "UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:76
|
||||
msgid ""
|
||||
"UPnP allows clients in the local network to automatically configure the "
|
||||
"router."
|
||||
msgstr ""
|
||||
"UPnP permite a los clientes en la red local configurar automáticamente el "
|
||||
"enrutador."
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:167
|
||||
msgid "UPnP lease file"
|
||||
msgstr "Tiempo de conexión UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:75
|
||||
msgid "Universal Plug & Play"
|
||||
msgstr "Plug & Play universal"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:60
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:56
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100
|
||||
msgid "Unknown"
|
||||
msgstr "Desconocido"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:139
|
||||
msgid "Uplink"
|
||||
msgstr "Enlace ascendente"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:170
|
||||
msgid "Use STUN"
|
||||
msgstr "Utilizar STUN"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:137
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:140
|
||||
msgid "Value in KByte/s, informational only"
|
||||
msgstr "Valor en KBytes/s, sólo informativo"
|
237
package/mtk/applications/luci-app-upnp-mtk-adjust/po/fi/upnp.po
Normal file
237
package/mtk/applications/luci-app-upnp-mtk-adjust/po/fi/upnp.po
Normal file
@ -0,0 +1,237 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-05-19 19:36+0200\n"
|
||||
"PO-Revision-Date: 2022-04-21 23:00+0000\n"
|
||||
"Last-Translator: Jiri Grönroos <jiri.gronroos@iki.fi>\n"
|
||||
"Language-Team: Finnish <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsupnp/fi/>\n"
|
||||
"Language: fi\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.12-dev\n"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182
|
||||
msgid ""
|
||||
"ACLs specify which external ports may be redirected to which internal "
|
||||
"addresses and ports"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202
|
||||
msgid "Action"
|
||||
msgstr "Toiminta"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:31
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:113
|
||||
msgid "Active UPnP Redirects"
|
||||
msgstr "Aktiivise UPnP-uudelleenohjaukset"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:119
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Lisäasetukset"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:131
|
||||
msgid "Advertise as IGDv1 device instead of IGDv2"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:203
|
||||
msgid "Allow"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:128
|
||||
msgid "Allow adding forwards only to requesting ip addresses"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150
|
||||
msgid "Announced model number"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:149
|
||||
msgid "Announced serial number"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160
|
||||
msgid "Clean rules interval"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156
|
||||
msgid "Clean rules threshold"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:45
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:85
|
||||
msgid "Client Address"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:47
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:87
|
||||
msgid "Client Port"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:188
|
||||
msgid "Comment"
|
||||
msgstr "Kommentti"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:62
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:106
|
||||
msgid "Delete"
|
||||
msgstr "Poista"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:204
|
||||
msgid "Deny"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:48
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:88
|
||||
msgid "Description"
|
||||
msgstr "Kuvaus"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148
|
||||
msgid "Device UUID"
|
||||
msgstr "Laitteen UUID"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:136
|
||||
msgid "Downlink"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:130
|
||||
msgid "Enable IGDv1 mode"
|
||||
msgstr "Käytä IGDv1-tilaa"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:125
|
||||
msgid "Enable NAT-PMP functionality"
|
||||
msgstr "Käytä NAT-PMP-toiminnallisuutta"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:124
|
||||
msgid "Enable UPnP functionality"
|
||||
msgstr "Käytä UPnP-toiminnallisuutta"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:133
|
||||
msgid "Enable additional logging"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:127
|
||||
msgid "Enable secure mode"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:44
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:84
|
||||
msgid "External Port"
|
||||
msgstr "Ulkoinen portti"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:190
|
||||
msgid "External ports"
|
||||
msgstr "Ulkoiset portit"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:118
|
||||
msgid "General Settings"
|
||||
msgstr "Yleiset asetukset"
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/rpcd/acl.d/luci-app-upnp.json:3
|
||||
msgid "Grant access to upnp procedures"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:46
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:86
|
||||
msgid "Host"
|
||||
msgstr "Palvelin"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194
|
||||
msgid "Internal addresses"
|
||||
msgstr "Sisäiset osoitteet"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:198
|
||||
msgid "Internal ports"
|
||||
msgstr "Sisäiset portit"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:181
|
||||
msgid "MiniUPnP ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:116
|
||||
msgid "MiniUPnP settings"
|
||||
msgstr "MiniUPnP-asetukset"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:152
|
||||
msgid "Notify interval"
|
||||
msgstr "Ilmoitusväli"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:142
|
||||
msgid "Port"
|
||||
msgstr "Portti"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164
|
||||
msgid "Presentation URL"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:83
|
||||
msgid "Protocol"
|
||||
msgstr "Protokolla"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:134
|
||||
msgid "Puts extra debugging information into the system log"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:146
|
||||
msgid "Report system instead of daemon uptime"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172
|
||||
msgid "STUN Host"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:176
|
||||
msgid "STUN Port"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:121
|
||||
msgid "Start UPnP and NAT-PMP service"
|
||||
msgstr "Käynnistä UPnP- ja NAT-PMP-palvelu"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:70
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:110
|
||||
msgid "There are no active redirects."
|
||||
msgstr "Ei aktiivisia uudelleenohjauksia."
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/luci/menu.d/luci-app-upnp.json:3
|
||||
msgid "UPnP"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:76
|
||||
msgid ""
|
||||
"UPnP allows clients in the local network to automatically configure the "
|
||||
"router."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:167
|
||||
msgid "UPnP lease file"
|
||||
msgstr "UPnP-lainatiedosto"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:75
|
||||
msgid "Universal Plug & Play"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:60
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:56
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100
|
||||
msgid "Unknown"
|
||||
msgstr "Tuntematon"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:139
|
||||
msgid "Uplink"
|
||||
msgstr "Lähetysyhteys"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:170
|
||||
msgid "Use STUN"
|
||||
msgstr "Käytä STUN:ia"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:137
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:140
|
||||
msgid "Value in KByte/s, informational only"
|
||||
msgstr ""
|
244
package/mtk/applications/luci-app-upnp-mtk-adjust/po/fr/upnp.po
Normal file
244
package/mtk/applications/luci-app-upnp-mtk-adjust/po/fr/upnp.po
Normal file
@ -0,0 +1,244 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-05-19 19:36+0200\n"
|
||||
"PO-Revision-Date: 2024-02-01 22:49+0000\n"
|
||||
"Last-Translator: ButterflyOfFire <boffire@users.noreply.hosted.weblate.org>\n"
|
||||
"Language-Team: French <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsupnp/fr/>\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 5.4-dev\n"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182
|
||||
msgid ""
|
||||
"ACLs specify which external ports may be redirected to which internal "
|
||||
"addresses and ports"
|
||||
msgstr ""
|
||||
"Les ACLs définissent quels ports externes peuvent être redirigés, vers "
|
||||
"quelles adresses et ports internes"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202
|
||||
msgid "Action"
|
||||
msgstr "Action"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:31
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:113
|
||||
msgid "Active UPnP Redirects"
|
||||
msgstr "Redirections UPnP actives"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:119
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Paramètres avancés"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:131
|
||||
msgid "Advertise as IGDv1 device instead of IGDv2"
|
||||
msgstr "Annoncer comme dispositif IGDv1 au lieu de IGDv2"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:203
|
||||
msgid "Allow"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:128
|
||||
msgid "Allow adding forwards only to requesting ip addresses"
|
||||
msgstr ""
|
||||
"Permet d'ajouter des redirections seulement vers les adresses IP qui font "
|
||||
"des demandes"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150
|
||||
msgid "Announced model number"
|
||||
msgstr "Numéro de modèle annoncé"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:149
|
||||
msgid "Announced serial number"
|
||||
msgstr "Numéro de série annoncé"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160
|
||||
msgid "Clean rules interval"
|
||||
msgstr "Intervalle des règles de nettoyage"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156
|
||||
msgid "Clean rules threshold"
|
||||
msgstr "Niveau des règles de nettoyage"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:45
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:85
|
||||
msgid "Client Address"
|
||||
msgstr "Adresse du client"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:47
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:87
|
||||
msgid "Client Port"
|
||||
msgstr "Port du client"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:188
|
||||
msgid "Comment"
|
||||
msgstr "Commentaire"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:62
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:106
|
||||
msgid "Delete"
|
||||
msgstr "Effacer"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:204
|
||||
msgid "Deny"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:48
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:88
|
||||
msgid "Description"
|
||||
msgstr "Description"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148
|
||||
msgid "Device UUID"
|
||||
msgstr "UUID du périphérique"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:136
|
||||
msgid "Downlink"
|
||||
msgstr "Liaison descendante"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:130
|
||||
msgid "Enable IGDv1 mode"
|
||||
msgstr "Activer le mode IGDv1"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:125
|
||||
msgid "Enable NAT-PMP functionality"
|
||||
msgstr "Activer la fonctionnalité NAT-PMP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:124
|
||||
msgid "Enable UPnP functionality"
|
||||
msgstr "Activer la fonctionnalité UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:133
|
||||
msgid "Enable additional logging"
|
||||
msgstr "Activer la journalisation additionnelle"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:127
|
||||
msgid "Enable secure mode"
|
||||
msgstr "Activer le mode sécurisé"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:44
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:84
|
||||
msgid "External Port"
|
||||
msgstr "Port externe"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:190
|
||||
msgid "External ports"
|
||||
msgstr "Ports externes"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:118
|
||||
msgid "General Settings"
|
||||
msgstr "Réglages généraux"
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/rpcd/acl.d/luci-app-upnp.json:3
|
||||
msgid "Grant access to upnp procedures"
|
||||
msgstr "Accorder l'accès aux procédures de upnp"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:46
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:86
|
||||
msgid "Host"
|
||||
msgstr "Hôte"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194
|
||||
msgid "Internal addresses"
|
||||
msgstr "Adresses internes"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:198
|
||||
msgid "Internal ports"
|
||||
msgstr "Ports internes"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:181
|
||||
msgid "MiniUPnP ACLs"
|
||||
msgstr "ACLs MiniUPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:116
|
||||
msgid "MiniUPnP settings"
|
||||
msgstr "Paramètres MiniUPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:152
|
||||
msgid "Notify interval"
|
||||
msgstr "Intervalle de notification"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:142
|
||||
msgid "Port"
|
||||
msgstr "Port"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164
|
||||
msgid "Presentation URL"
|
||||
msgstr "URL de présentation"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:83
|
||||
msgid "Protocol"
|
||||
msgstr "Protocole"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:134
|
||||
msgid "Puts extra debugging information into the system log"
|
||||
msgstr "Rajoute des informations de debug dans le journal-système"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:146
|
||||
msgid "Report system instead of daemon uptime"
|
||||
msgstr ""
|
||||
"Indiquer la durée de fonctionnement du système plutôt que celle du démon UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172
|
||||
msgid "STUN Host"
|
||||
msgstr "Hôte STUN"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:176
|
||||
msgid "STUN Port"
|
||||
msgstr "Port STUN"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:121
|
||||
msgid "Start UPnP and NAT-PMP service"
|
||||
msgstr "Démarrer les services UPnP et NAT-PMP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:70
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:110
|
||||
msgid "There are no active redirects."
|
||||
msgstr "Il n'y a pas de redirections actives."
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/luci/menu.d/luci-app-upnp.json:3
|
||||
msgid "UPnP"
|
||||
msgstr "UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:76
|
||||
msgid ""
|
||||
"UPnP allows clients in the local network to automatically configure the "
|
||||
"router."
|
||||
msgstr ""
|
||||
"UPnP permet à des clients du réseau local de configurer automatiquement le "
|
||||
"routeur."
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:167
|
||||
msgid "UPnP lease file"
|
||||
msgstr "Fichier des baux UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:75
|
||||
msgid "Universal Plug & Play"
|
||||
msgstr "Plug & Play universel"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:60
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:56
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100
|
||||
msgid "Unknown"
|
||||
msgstr "Inconnue"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:139
|
||||
msgid "Uplink"
|
||||
msgstr "Liaison montante"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:170
|
||||
msgid "Use STUN"
|
||||
msgstr "Utiliser STUN"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:137
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:140
|
||||
msgid "Value in KByte/s, informational only"
|
||||
msgstr "Valeur en Ko/s, pour information seulement"
|
235
package/mtk/applications/luci-app-upnp-mtk-adjust/po/he/upnp.po
Normal file
235
package/mtk/applications/luci-app-upnp-mtk-adjust/po/he/upnp.po
Normal file
@ -0,0 +1,235 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"PO-Revision-Date: 2023-09-07 02:50+0000\n"
|
||||
"Last-Translator: Oren Bahar <shavitbit@gmail.com>\n"
|
||||
"Language-Team: Hebrew <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsupnp/he/>\n"
|
||||
"Language: he\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 5.0.1-dev\n"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182
|
||||
msgid ""
|
||||
"ACLs specify which external ports may be redirected to which internal "
|
||||
"addresses and ports"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202
|
||||
msgid "Action"
|
||||
msgstr "פעולה"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:31
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:113
|
||||
msgid "Active UPnP Redirects"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:119
|
||||
msgid "Advanced Settings"
|
||||
msgstr "הגדרות מתקדמות"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:131
|
||||
msgid "Advertise as IGDv1 device instead of IGDv2"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:203
|
||||
msgid "Allow"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:128
|
||||
msgid "Allow adding forwards only to requesting ip addresses"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150
|
||||
msgid "Announced model number"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:149
|
||||
msgid "Announced serial number"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160
|
||||
msgid "Clean rules interval"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156
|
||||
msgid "Clean rules threshold"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:45
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:85
|
||||
msgid "Client Address"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:47
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:87
|
||||
msgid "Client Port"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:188
|
||||
msgid "Comment"
|
||||
msgstr "תגובה"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:62
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:106
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:204
|
||||
msgid "Deny"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:48
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:88
|
||||
msgid "Description"
|
||||
msgstr "תיאור"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148
|
||||
msgid "Device UUID"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:136
|
||||
msgid "Downlink"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:130
|
||||
msgid "Enable IGDv1 mode"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:125
|
||||
msgid "Enable NAT-PMP functionality"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:124
|
||||
msgid "Enable UPnP functionality"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:133
|
||||
msgid "Enable additional logging"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:127
|
||||
msgid "Enable secure mode"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:44
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:84
|
||||
msgid "External Port"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:190
|
||||
msgid "External ports"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:118
|
||||
msgid "General Settings"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/rpcd/acl.d/luci-app-upnp.json:3
|
||||
msgid "Grant access to upnp procedures"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:46
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:86
|
||||
msgid "Host"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194
|
||||
msgid "Internal addresses"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:198
|
||||
msgid "Internal ports"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:181
|
||||
msgid "MiniUPnP ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:116
|
||||
msgid "MiniUPnP settings"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:152
|
||||
msgid "Notify interval"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:142
|
||||
msgid "Port"
|
||||
msgstr "פתחה"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164
|
||||
msgid "Presentation URL"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:83
|
||||
msgid "Protocol"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:134
|
||||
msgid "Puts extra debugging information into the system log"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:146
|
||||
msgid "Report system instead of daemon uptime"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172
|
||||
msgid "STUN Host"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:176
|
||||
msgid "STUN Port"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:121
|
||||
msgid "Start UPnP and NAT-PMP service"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:70
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:110
|
||||
msgid "There are no active redirects."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/luci/menu.d/luci-app-upnp.json:3
|
||||
msgid "UPnP"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:76
|
||||
msgid ""
|
||||
"UPnP allows clients in the local network to automatically configure the "
|
||||
"router."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:167
|
||||
msgid "UPnP lease file"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:75
|
||||
msgid "Universal Plug & Play"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:60
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:56
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100
|
||||
msgid "Unknown"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:139
|
||||
msgid "Uplink"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:170
|
||||
msgid "Use STUN"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:137
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:140
|
||||
msgid "Value in KByte/s, informational only"
|
||||
msgstr ""
|
237
package/mtk/applications/luci-app-upnp-mtk-adjust/po/hi/upnp.po
Normal file
237
package/mtk/applications/luci-app-upnp-mtk-adjust/po/hi/upnp.po
Normal file
@ -0,0 +1,237 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-05-19 19:36+0200\n"
|
||||
"PO-Revision-Date: 2024-07-06 11:32+0000\n"
|
||||
"Last-Translator: Sathvic <sathvic.p@gmail.com>\n"
|
||||
"Language-Team: Hindi <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsupnp/hi/>\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 5.7-dev\n"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182
|
||||
msgid ""
|
||||
"ACLs specify which external ports may be redirected to which internal "
|
||||
"addresses and ports"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202
|
||||
msgid "Action"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:31
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:113
|
||||
msgid "Active UPnP Redirects"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:119
|
||||
msgid "Advanced Settings"
|
||||
msgstr "उन्नत सेटिंग्स"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:131
|
||||
msgid "Advertise as IGDv1 device instead of IGDv2"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:203
|
||||
msgid "Allow"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:128
|
||||
msgid "Allow adding forwards only to requesting ip addresses"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150
|
||||
msgid "Announced model number"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:149
|
||||
msgid "Announced serial number"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160
|
||||
msgid "Clean rules interval"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156
|
||||
msgid "Clean rules threshold"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:45
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:85
|
||||
msgid "Client Address"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:47
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:87
|
||||
msgid "Client Port"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:188
|
||||
msgid "Comment"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:62
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:106
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:204
|
||||
msgid "Deny"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:48
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:88
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148
|
||||
msgid "Device UUID"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:136
|
||||
msgid "Downlink"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:130
|
||||
msgid "Enable IGDv1 mode"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:125
|
||||
msgid "Enable NAT-PMP functionality"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:124
|
||||
msgid "Enable UPnP functionality"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:133
|
||||
msgid "Enable additional logging"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:127
|
||||
msgid "Enable secure mode"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:44
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:84
|
||||
msgid "External Port"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:190
|
||||
msgid "External ports"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:118
|
||||
msgid "General Settings"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/rpcd/acl.d/luci-app-upnp.json:3
|
||||
msgid "Grant access to upnp procedures"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:46
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:86
|
||||
msgid "Host"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194
|
||||
msgid "Internal addresses"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:198
|
||||
msgid "Internal ports"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:181
|
||||
msgid "MiniUPnP ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:116
|
||||
msgid "MiniUPnP settings"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:152
|
||||
msgid "Notify interval"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:142
|
||||
msgid "Port"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164
|
||||
msgid "Presentation URL"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:83
|
||||
msgid "Protocol"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:134
|
||||
msgid "Puts extra debugging information into the system log"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:146
|
||||
msgid "Report system instead of daemon uptime"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172
|
||||
msgid "STUN Host"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:176
|
||||
msgid "STUN Port"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:121
|
||||
msgid "Start UPnP and NAT-PMP service"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:70
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:110
|
||||
msgid "There are no active redirects."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/luci/menu.d/luci-app-upnp.json:3
|
||||
msgid "UPnP"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:76
|
||||
msgid ""
|
||||
"UPnP allows clients in the local network to automatically configure the "
|
||||
"router."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:167
|
||||
msgid "UPnP lease file"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:75
|
||||
msgid "Universal Plug & Play"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:60
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:56
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100
|
||||
msgid "Unknown"
|
||||
msgstr "अज्ञात"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:139
|
||||
msgid "Uplink"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:170
|
||||
msgid "Use STUN"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:137
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:140
|
||||
msgid "Value in KByte/s, informational only"
|
||||
msgstr ""
|
241
package/mtk/applications/luci-app-upnp-mtk-adjust/po/hu/upnp.po
Normal file
241
package/mtk/applications/luci-app-upnp-mtk-adjust/po/hu/upnp.po
Normal file
@ -0,0 +1,241 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"PO-Revision-Date: 2024-08-20 16:40+0000\n"
|
||||
"Last-Translator: hmzs <hmzs@1szer1.hu>\n"
|
||||
"Language-Team: Hungarian <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsupnp/hu/>\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 5.7\n"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182
|
||||
msgid ""
|
||||
"ACLs specify which external ports may be redirected to which internal "
|
||||
"addresses and ports"
|
||||
msgstr ""
|
||||
"Az ACL-ek határozzák meg, hogy melyik külső portok melyik belső portokra és "
|
||||
"címekre kerülhetnek továbbításra"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202
|
||||
msgid "Action"
|
||||
msgstr "Művelet"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:31
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:113
|
||||
msgid "Active UPnP Redirects"
|
||||
msgstr "Aktív UPnP átirányítások"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:119
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Haladó beállítások"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:131
|
||||
msgid "Advertise as IGDv1 device instead of IGDv2"
|
||||
msgstr "Hirdetés IGDv1 eszközként IGDv2 helyett"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:203
|
||||
msgid "Allow"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:128
|
||||
msgid "Allow adding forwards only to requesting ip addresses"
|
||||
msgstr ""
|
||||
"Kizárólag a kérést küldő IP címre történő továbbítás hozzáadásának "
|
||||
"engedélyezése"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150
|
||||
msgid "Announced model number"
|
||||
msgstr "Bejelentett modellszám"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:149
|
||||
msgid "Announced serial number"
|
||||
msgstr "Bejelentett sorozatszám"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160
|
||||
msgid "Clean rules interval"
|
||||
msgstr "Szabály törlési időköz"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156
|
||||
msgid "Clean rules threshold"
|
||||
msgstr "Szabály törlési küszöbérték"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:45
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:85
|
||||
msgid "Client Address"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:47
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:87
|
||||
msgid "Client Port"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:188
|
||||
msgid "Comment"
|
||||
msgstr "Megjegyzés"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:62
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:106
|
||||
msgid "Delete"
|
||||
msgstr "Törlés"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:204
|
||||
msgid "Deny"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:48
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:88
|
||||
msgid "Description"
|
||||
msgstr "Leírás"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148
|
||||
msgid "Device UUID"
|
||||
msgstr "Eszköz UUID"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:136
|
||||
msgid "Downlink"
|
||||
msgstr "Befelé jövő kapcsolat"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:130
|
||||
msgid "Enable IGDv1 mode"
|
||||
msgstr "IGDv1 mód engedélyezése"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:125
|
||||
msgid "Enable NAT-PMP functionality"
|
||||
msgstr "NAT-PMP funkció engedélyezése"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:124
|
||||
msgid "Enable UPnP functionality"
|
||||
msgstr "UPnP funkció engedélyezése"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:133
|
||||
msgid "Enable additional logging"
|
||||
msgstr "További naplózás engedélyezése"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:127
|
||||
msgid "Enable secure mode"
|
||||
msgstr "Biztonságos mód engedélyezése"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:44
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:84
|
||||
msgid "External Port"
|
||||
msgstr "Külső port"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:190
|
||||
msgid "External ports"
|
||||
msgstr "Külső portok"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:118
|
||||
msgid "General Settings"
|
||||
msgstr "Általános beállítások"
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/rpcd/acl.d/luci-app-upnp.json:3
|
||||
msgid "Grant access to upnp procedures"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:46
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:86
|
||||
msgid "Host"
|
||||
msgstr "Gép"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194
|
||||
msgid "Internal addresses"
|
||||
msgstr "Belső címek"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:198
|
||||
msgid "Internal ports"
|
||||
msgstr "Belső portok"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:181
|
||||
msgid "MiniUPnP ACLs"
|
||||
msgstr "MiniUPnP ACL-ek"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:116
|
||||
msgid "MiniUPnP settings"
|
||||
msgstr "MiniUPnP beállítások"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:152
|
||||
msgid "Notify interval"
|
||||
msgstr "Értesítési időköz"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:142
|
||||
msgid "Port"
|
||||
msgstr "Port"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164
|
||||
msgid "Presentation URL"
|
||||
msgstr "Bemutató URL"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:83
|
||||
msgid "Protocol"
|
||||
msgstr "Protokoll"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:134
|
||||
msgid "Puts extra debugging information into the system log"
|
||||
msgstr "További hibakeresési információkat tesz a rendszernaplóba"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:146
|
||||
msgid "Report system instead of daemon uptime"
|
||||
msgstr "A démon helyett a rendszer működési idejét jeleníti meg"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172
|
||||
msgid "STUN Host"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:176
|
||||
msgid "STUN Port"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:121
|
||||
msgid "Start UPnP and NAT-PMP service"
|
||||
msgstr "UPnP és NAT-PMP szolgáltatás elindítása"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:70
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:110
|
||||
msgid "There are no active redirects."
|
||||
msgstr "Nincsenek aktív átírányítások."
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/luci/menu.d/luci-app-upnp.json:3
|
||||
msgid "UPnP"
|
||||
msgstr "UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:76
|
||||
msgid ""
|
||||
"UPnP allows clients in the local network to automatically configure the "
|
||||
"router."
|
||||
msgstr ""
|
||||
"Az UPnP lehetővé teszi a hálózatban lévő ügyfelek számára hogy automatikusan "
|
||||
"beállítsák a routert."
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:167
|
||||
msgid "UPnP lease file"
|
||||
msgstr "UPnP bérlet fájl"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:75
|
||||
msgid "Universal Plug & Play"
|
||||
msgstr "Univerzális Plug and Play"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:60
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:56
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100
|
||||
msgid "Unknown"
|
||||
msgstr "Ismeretlen"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:139
|
||||
msgid "Uplink"
|
||||
msgstr "Kifelé menő kapcsolat"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:170
|
||||
msgid "Use STUN"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:137
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:140
|
||||
msgid "Value in KByte/s, informational only"
|
||||
msgstr "Érték KByte/s-ban, csak tájékoztató jellegű"
|
241
package/mtk/applications/luci-app-upnp-mtk-adjust/po/it/upnp.po
Normal file
241
package/mtk/applications/luci-app-upnp-mtk-adjust/po/it/upnp.po
Normal file
@ -0,0 +1,241 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-05-19 19:36+0200\n"
|
||||
"PO-Revision-Date: 2024-08-02 19:09+0000\n"
|
||||
"Last-Translator: Random <random-r@users.noreply.hosted.weblate.org>\n"
|
||||
"Language-Team: Italian <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsupnp/it/>\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 5.7-dev\n"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182
|
||||
msgid ""
|
||||
"ACLs specify which external ports may be redirected to which internal "
|
||||
"addresses and ports"
|
||||
msgstr ""
|
||||
"Le ACL specificano quali porte esterne possono essere redirezionate a quali "
|
||||
"indirizzi e porte interni"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202
|
||||
msgid "Action"
|
||||
msgstr "Azione"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:31
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:113
|
||||
msgid "Active UPnP Redirects"
|
||||
msgstr "Attiva reindirizzamento UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:119
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Impostazioni avanzate"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:131
|
||||
msgid "Advertise as IGDv1 device instead of IGDv2"
|
||||
msgstr "Pubblicizza come dispositivo IGDv1 anziché IGDv2"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:203
|
||||
msgid "Allow"
|
||||
msgstr "Permetti"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:128
|
||||
msgid "Allow adding forwards only to requesting ip addresses"
|
||||
msgstr "Permetti l'aggiunta della mappatura solo agli indirizzi IP richiedenti"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150
|
||||
msgid "Announced model number"
|
||||
msgstr "Numero modello annunciato"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:149
|
||||
msgid "Announced serial number"
|
||||
msgstr "Numero seriale annunciato"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160
|
||||
msgid "Clean rules interval"
|
||||
msgstr "Cancella le regole"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156
|
||||
msgid "Clean rules threshold"
|
||||
msgstr "Pulisci le regole degli eventi"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:45
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:85
|
||||
msgid "Client Address"
|
||||
msgstr "Indirizzo IP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:47
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:87
|
||||
msgid "Client Port"
|
||||
msgstr "Porta"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:188
|
||||
msgid "Comment"
|
||||
msgstr "Commento"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:62
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:106
|
||||
msgid "Delete"
|
||||
msgstr "Elimina"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:204
|
||||
msgid "Deny"
|
||||
msgstr "Nega"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:48
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:88
|
||||
msgid "Description"
|
||||
msgstr "Descrizione"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148
|
||||
msgid "Device UUID"
|
||||
msgstr "UUID del dispositivo"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:136
|
||||
msgid "Downlink"
|
||||
msgstr "Downlink"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:130
|
||||
msgid "Enable IGDv1 mode"
|
||||
msgstr "Abilita modalità IGDv1"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:125
|
||||
msgid "Enable NAT-PMP functionality"
|
||||
msgstr "Abilita il protocollo NAT-PMP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:124
|
||||
msgid "Enable UPnP functionality"
|
||||
msgstr "Abilita il protocollo UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:133
|
||||
msgid "Enable additional logging"
|
||||
msgstr "Abilita log addizionale"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:127
|
||||
msgid "Enable secure mode"
|
||||
msgstr "Abilita la modalità sicura"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:44
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:84
|
||||
msgid "External Port"
|
||||
msgstr "Porta Esterna"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:190
|
||||
msgid "External ports"
|
||||
msgstr "Porte Esterne"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:118
|
||||
msgid "General Settings"
|
||||
msgstr "Impostazioni Generali"
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/rpcd/acl.d/luci-app-upnp.json:3
|
||||
msgid "Grant access to upnp procedures"
|
||||
msgstr "Concedere l'accesso alle procedure upnp"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:46
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:86
|
||||
msgid "Host"
|
||||
msgstr "Host"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194
|
||||
msgid "Internal addresses"
|
||||
msgstr "Indirizzi Interni"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:198
|
||||
msgid "Internal ports"
|
||||
msgstr "Porte Interne"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:181
|
||||
msgid "MiniUPnP ACLs"
|
||||
msgstr "ACL MiniUPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:116
|
||||
msgid "MiniUPnP settings"
|
||||
msgstr "Opzioni di MiniUPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:152
|
||||
msgid "Notify interval"
|
||||
msgstr "Intervallo di notifica"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:142
|
||||
msgid "Port"
|
||||
msgstr "Porta"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164
|
||||
msgid "Presentation URL"
|
||||
msgstr "URL di presentazione"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:83
|
||||
msgid "Protocol"
|
||||
msgstr "Protocollo"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:134
|
||||
msgid "Puts extra debugging information into the system log"
|
||||
msgstr "Scrivi nel log di sistema ulteriori informazioni di debug"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:146
|
||||
msgid "Report system instead of daemon uptime"
|
||||
msgstr "Mostra l'uptime del sistema invece del demone"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172
|
||||
msgid "STUN Host"
|
||||
msgstr "Host STUN"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:176
|
||||
msgid "STUN Port"
|
||||
msgstr "Porta STUN"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:121
|
||||
msgid "Start UPnP and NAT-PMP service"
|
||||
msgstr "Avvia il servizo UPnP e NAT-PMP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:70
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:110
|
||||
msgid "There are no active redirects."
|
||||
msgstr "Non ci sono mappature attive."
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/luci/menu.d/luci-app-upnp.json:3
|
||||
msgid "UPnP"
|
||||
msgstr "UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:76
|
||||
msgid ""
|
||||
"UPnP allows clients in the local network to automatically configure the "
|
||||
"router."
|
||||
msgstr ""
|
||||
"UPnP permette ai dispositivi nella rete locale di configurare "
|
||||
"automaticamente il router."
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:167
|
||||
msgid "UPnP lease file"
|
||||
msgstr "File di leasing UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:75
|
||||
msgid "Universal Plug & Play"
|
||||
msgstr "Plug & Play universale"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:60
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:56
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100
|
||||
msgid "Unknown"
|
||||
msgstr "Sconosciuto"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:139
|
||||
msgid "Uplink"
|
||||
msgstr "Uplink"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:170
|
||||
msgid "Use STUN"
|
||||
msgstr "Usa STUN"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:137
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:140
|
||||
msgid "Value in KByte/s, informational only"
|
||||
msgstr "Valori in KByte/s (informativo)"
|
241
package/mtk/applications/luci-app-upnp-mtk-adjust/po/ja/upnp.po
Normal file
241
package/mtk/applications/luci-app-upnp-mtk-adjust/po/ja/upnp.po
Normal file
@ -0,0 +1,241 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-05-19 19:36+0200\n"
|
||||
"PO-Revision-Date: 2024-03-28 23:40+0000\n"
|
||||
"Last-Translator: Ioroi Kouhei <kouhei@ioroi.org>\n"
|
||||
"Language-Team: Japanese <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsupnp/ja/>\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 5.5-dev\n"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182
|
||||
msgid ""
|
||||
"ACLs specify which external ports may be redirected to which internal "
|
||||
"addresses and ports"
|
||||
msgstr ""
|
||||
"アクセス制御リスト(ACL)は、どの外部ポートからどの内部アドレス及びポートへリ"
|
||||
"ダイレクトするかを設定します。"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202
|
||||
msgid "Action"
|
||||
msgstr "アクション"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:31
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:113
|
||||
msgid "Active UPnP Redirects"
|
||||
msgstr "稼働中のUPnPリダイレクト"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:119
|
||||
msgid "Advanced Settings"
|
||||
msgstr "詳細設定"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:131
|
||||
msgid "Advertise as IGDv1 device instead of IGDv2"
|
||||
msgstr "IGDv2 ではなく IGDv1 デバイスとしてアドバタイズ"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:203
|
||||
msgid "Allow"
|
||||
msgstr "許可"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:128
|
||||
msgid "Allow adding forwards only to requesting ip addresses"
|
||||
msgstr "要求元IPアドレスへの転送のみ、追加を許可します。"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150
|
||||
msgid "Announced model number"
|
||||
msgstr "通知するモデル番号"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:149
|
||||
msgid "Announced serial number"
|
||||
msgstr "通知するシリアル番号"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160
|
||||
msgid "Clean rules interval"
|
||||
msgstr "ルール消去間隔"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156
|
||||
msgid "Clean rules threshold"
|
||||
msgstr "ルール消去しきい値"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:45
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:85
|
||||
msgid "Client Address"
|
||||
msgstr "クライアント・アドレス"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:47
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:87
|
||||
msgid "Client Port"
|
||||
msgstr "クライアント・ポート"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:188
|
||||
msgid "Comment"
|
||||
msgstr "コメント"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:62
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:106
|
||||
msgid "Delete"
|
||||
msgstr "削除"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:204
|
||||
msgid "Deny"
|
||||
msgstr "拒否"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:48
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:88
|
||||
msgid "Description"
|
||||
msgstr "説明"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148
|
||||
msgid "Device UUID"
|
||||
msgstr "デバイス UUID"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:136
|
||||
msgid "Downlink"
|
||||
msgstr "ダウンリンク"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:130
|
||||
msgid "Enable IGDv1 mode"
|
||||
msgstr "IGDv1 モードを有効化"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:125
|
||||
msgid "Enable NAT-PMP functionality"
|
||||
msgstr "NAT-PMP機能を有効にする"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:124
|
||||
msgid "Enable UPnP functionality"
|
||||
msgstr "UPnP機能を有効にする"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:133
|
||||
msgid "Enable additional logging"
|
||||
msgstr "ログ機能を有効にする"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:127
|
||||
msgid "Enable secure mode"
|
||||
msgstr "セキュアモードを有効にする"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:44
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:84
|
||||
msgid "External Port"
|
||||
msgstr "外部ポート"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:190
|
||||
msgid "External ports"
|
||||
msgstr "外部ポート"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:118
|
||||
msgid "General Settings"
|
||||
msgstr "一般設定"
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/rpcd/acl.d/luci-app-upnp.json:3
|
||||
msgid "Grant access to upnp procedures"
|
||||
msgstr "upnp プロシージャへのアクセスを許可"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:46
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:86
|
||||
msgid "Host"
|
||||
msgstr "ホスト"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194
|
||||
msgid "Internal addresses"
|
||||
msgstr "内部アドレス"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:198
|
||||
msgid "Internal ports"
|
||||
msgstr "内部ポート"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:181
|
||||
msgid "MiniUPnP ACLs"
|
||||
msgstr "MiniUPnPアクセス制御リスト(ACL)"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:116
|
||||
msgid "MiniUPnP settings"
|
||||
msgstr "MiniUPnP 設定"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:152
|
||||
msgid "Notify interval"
|
||||
msgstr "通知間隔"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:142
|
||||
msgid "Port"
|
||||
msgstr "ポート"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164
|
||||
msgid "Presentation URL"
|
||||
msgstr "プレゼンテーションURL"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:83
|
||||
msgid "Protocol"
|
||||
msgstr "プロトコル"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:134
|
||||
msgid "Puts extra debugging information into the system log"
|
||||
msgstr "追加のデバッグ情報をシステムログへ挿入する"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:146
|
||||
msgid "Report system instead of daemon uptime"
|
||||
msgstr "サービスの起動時間の代わりにシステムの起動時間を使用する"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172
|
||||
msgid "STUN Host"
|
||||
msgstr "STUN ホスト"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:176
|
||||
msgid "STUN Port"
|
||||
msgstr "STUN ポート"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:121
|
||||
msgid "Start UPnP and NAT-PMP service"
|
||||
msgstr "UPnP及びNAT-PMPサービスを開始する"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:70
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:110
|
||||
msgid "There are no active redirects."
|
||||
msgstr "有効なリダイレクトはありません。"
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/luci/menu.d/luci-app-upnp.json:3
|
||||
msgid "UPnP"
|
||||
msgstr "UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:76
|
||||
msgid ""
|
||||
"UPnP allows clients in the local network to automatically configure the "
|
||||
"router."
|
||||
msgstr ""
|
||||
"UPnPを使用することで、ローカルネットワーク内のクライアントが自動的にルータを"
|
||||
"構成することができます。"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:167
|
||||
msgid "UPnP lease file"
|
||||
msgstr "UPnP リースファイル"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:75
|
||||
msgid "Universal Plug & Play"
|
||||
msgstr "ユニバーサル プラグ & プレイ"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:60
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:56
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100
|
||||
msgid "Unknown"
|
||||
msgstr "不明"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:139
|
||||
msgid "Uplink"
|
||||
msgstr "アップリンク"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:170
|
||||
msgid "Use STUN"
|
||||
msgstr "STUN を使用"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:137
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:140
|
||||
msgid "Value in KByte/s, informational only"
|
||||
msgstr "クライアントへの情報提供のみに使用される、KByte/sの値です"
|
237
package/mtk/applications/luci-app-upnp-mtk-adjust/po/ko/upnp.po
Normal file
237
package/mtk/applications/luci-app-upnp-mtk-adjust/po/ko/upnp.po
Normal file
@ -0,0 +1,237 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-05-19 19:36+0200\n"
|
||||
"PO-Revision-Date: 2023-10-04 03:38+0000\n"
|
||||
"Last-Translator: Wonchul Kang <teshi85@gmail.com>\n"
|
||||
"Language-Team: Korean <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsupnp/ko/>\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 5.1-dev\n"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182
|
||||
msgid ""
|
||||
"ACLs specify which external ports may be redirected to which internal "
|
||||
"addresses and ports"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202
|
||||
msgid "Action"
|
||||
msgstr "액션"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:31
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:113
|
||||
msgid "Active UPnP Redirects"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:119
|
||||
msgid "Advanced Settings"
|
||||
msgstr "고급 설정"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:131
|
||||
msgid "Advertise as IGDv1 device instead of IGDv2"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:203
|
||||
msgid "Allow"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:128
|
||||
msgid "Allow adding forwards only to requesting ip addresses"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150
|
||||
msgid "Announced model number"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:149
|
||||
msgid "Announced serial number"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160
|
||||
msgid "Clean rules interval"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156
|
||||
msgid "Clean rules threshold"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:45
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:85
|
||||
msgid "Client Address"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:47
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:87
|
||||
msgid "Client Port"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:188
|
||||
msgid "Comment"
|
||||
msgstr "메모"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:62
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:106
|
||||
msgid "Delete"
|
||||
msgstr "삭제"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:204
|
||||
msgid "Deny"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:48
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:88
|
||||
msgid "Description"
|
||||
msgstr "설명"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148
|
||||
msgid "Device UUID"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:136
|
||||
msgid "Downlink"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:130
|
||||
msgid "Enable IGDv1 mode"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:125
|
||||
msgid "Enable NAT-PMP functionality"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:124
|
||||
msgid "Enable UPnP functionality"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:133
|
||||
msgid "Enable additional logging"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:127
|
||||
msgid "Enable secure mode"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:44
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:84
|
||||
msgid "External Port"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:190
|
||||
msgid "External ports"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:118
|
||||
msgid "General Settings"
|
||||
msgstr "기본 설정"
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/rpcd/acl.d/luci-app-upnp.json:3
|
||||
msgid "Grant access to upnp procedures"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:46
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:86
|
||||
msgid "Host"
|
||||
msgstr "호스트"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194
|
||||
msgid "Internal addresses"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:198
|
||||
msgid "Internal ports"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:181
|
||||
msgid "MiniUPnP ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:116
|
||||
msgid "MiniUPnP settings"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:152
|
||||
msgid "Notify interval"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:142
|
||||
msgid "Port"
|
||||
msgstr "포트"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164
|
||||
msgid "Presentation URL"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:83
|
||||
msgid "Protocol"
|
||||
msgstr "프로토콜"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:134
|
||||
msgid "Puts extra debugging information into the system log"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:146
|
||||
msgid "Report system instead of daemon uptime"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172
|
||||
msgid "STUN Host"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:176
|
||||
msgid "STUN Port"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:121
|
||||
msgid "Start UPnP and NAT-PMP service"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:70
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:110
|
||||
msgid "There are no active redirects."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/luci/menu.d/luci-app-upnp.json:3
|
||||
msgid "UPnP"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:76
|
||||
msgid ""
|
||||
"UPnP allows clients in the local network to automatically configure the "
|
||||
"router."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:167
|
||||
msgid "UPnP lease file"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:75
|
||||
msgid "Universal Plug & Play"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:60
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:56
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100
|
||||
msgid "Unknown"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:139
|
||||
msgid "Uplink"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:170
|
||||
msgid "Use STUN"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:137
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:140
|
||||
msgid "Value in KByte/s, informational only"
|
||||
msgstr ""
|
236
package/mtk/applications/luci-app-upnp-mtk-adjust/po/lt/upnp.po
Normal file
236
package/mtk/applications/luci-app-upnp-mtk-adjust/po/lt/upnp.po
Normal file
@ -0,0 +1,236 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"PO-Revision-Date: 2024-08-07 18:30+0000\n"
|
||||
"Last-Translator: Džiugas Januševičius <dziugas1959@hotmail.com>\n"
|
||||
"Language-Team: Lithuanian <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsupnp/lt/>\n"
|
||||
"Language: lt\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%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
"X-Generator: Weblate 5.7-dev\n"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182
|
||||
msgid ""
|
||||
"ACLs specify which external ports may be redirected to which internal "
|
||||
"addresses and ports"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202
|
||||
msgid "Action"
|
||||
msgstr "Veiksmas"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:31
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:113
|
||||
msgid "Active UPnP Redirects"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:119
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Pažangūs nustatymai"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:131
|
||||
msgid "Advertise as IGDv1 device instead of IGDv2"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:203
|
||||
msgid "Allow"
|
||||
msgstr "Leisti"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:128
|
||||
msgid "Allow adding forwards only to requesting ip addresses"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150
|
||||
msgid "Announced model number"
|
||||
msgstr "Paskelbtas modelio numeris"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:149
|
||||
msgid "Announced serial number"
|
||||
msgstr "Paskelbtas serijos numeris"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160
|
||||
msgid "Clean rules interval"
|
||||
msgstr "Išvalyti taisyklių intervalus"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156
|
||||
msgid "Clean rules threshold"
|
||||
msgstr "Išvalyti taisyklių slenksčius"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:45
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:85
|
||||
msgid "Client Address"
|
||||
msgstr "Kliento adresas"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:47
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:87
|
||||
msgid "Client Port"
|
||||
msgstr "Kliento prievadas"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:188
|
||||
msgid "Comment"
|
||||
msgstr "Komentuoti"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:62
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:106
|
||||
msgid "Delete"
|
||||
msgstr "Ištrinti"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:204
|
||||
msgid "Deny"
|
||||
msgstr "Atmesti/Neprileisti"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:48
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:88
|
||||
msgid "Description"
|
||||
msgstr "Aprašas/-ymas"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148
|
||||
msgid "Device UUID"
|
||||
msgstr "Įrenginio „UUID“"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:136
|
||||
msgid "Downlink"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:130
|
||||
msgid "Enable IGDv1 mode"
|
||||
msgstr "Įjungti „IGDv1“ režimą"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:125
|
||||
msgid "Enable NAT-PMP functionality"
|
||||
msgstr "Įgalinti „NAT-PMP“ funkcionalumą"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:124
|
||||
msgid "Enable UPnP functionality"
|
||||
msgstr "Įgalinti „UPnP“ funkcionalumą"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:133
|
||||
msgid "Enable additional logging"
|
||||
msgstr "Įjungti papildomą žurnalinimą"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:127
|
||||
msgid "Enable secure mode"
|
||||
msgstr "Įjungti „saugųjį režimą“"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:44
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:84
|
||||
msgid "External Port"
|
||||
msgstr "Išorinis prievadas"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:190
|
||||
msgid "External ports"
|
||||
msgstr "Išoriniai prievadai"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:118
|
||||
msgid "General Settings"
|
||||
msgstr "Bendri nustatymai"
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/rpcd/acl.d/luci-app-upnp.json:3
|
||||
msgid "Grant access to upnp procedures"
|
||||
msgstr "Duoti prieigą prie „upnp procedures“"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:46
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:86
|
||||
msgid "Host"
|
||||
msgstr "Skleidėjas/Vedėjas"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194
|
||||
msgid "Internal addresses"
|
||||
msgstr "Vidiniai adresai"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:198
|
||||
msgid "Internal ports"
|
||||
msgstr "Vidiniai prievadai"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:181
|
||||
msgid "MiniUPnP ACLs"
|
||||
msgstr "„MiniUPnP ACLs“"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:116
|
||||
msgid "MiniUPnP settings"
|
||||
msgstr "„MiniUPnP“ nustatymai"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:152
|
||||
msgid "Notify interval"
|
||||
msgstr "Pranešimo intervalas"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:142
|
||||
msgid "Port"
|
||||
msgstr "Prievadas"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164
|
||||
msgid "Presentation URL"
|
||||
msgstr "Pateikties „URL“ – saitas"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:83
|
||||
msgid "Protocol"
|
||||
msgstr "Protokolas"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:134
|
||||
msgid "Puts extra debugging information into the system log"
|
||||
msgstr "Įdeda papildomą derinimo informaciją į sistemos žurnalą"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:146
|
||||
msgid "Report system instead of daemon uptime"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172
|
||||
msgid "STUN Host"
|
||||
msgstr "„STUN“ skleidėjas/vedėjas"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:176
|
||||
msgid "STUN Port"
|
||||
msgstr "„STUN“ prievadas"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:121
|
||||
msgid "Start UPnP and NAT-PMP service"
|
||||
msgstr "Paleisti „UPnP“ ir „NAT-PMP“ tarnybą"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:70
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:110
|
||||
msgid "There are no active redirects."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/luci/menu.d/luci-app-upnp.json:3
|
||||
msgid "UPnP"
|
||||
msgstr "„UPnP“"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:76
|
||||
msgid ""
|
||||
"UPnP allows clients in the local network to automatically configure the "
|
||||
"router."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:167
|
||||
msgid "UPnP lease file"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:75
|
||||
msgid "Universal Plug & Play"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:60
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:56
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100
|
||||
msgid "Unknown"
|
||||
msgstr "Nežinoma/-s/-i"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:139
|
||||
msgid "Uplink"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:170
|
||||
msgid "Use STUN"
|
||||
msgstr "Naudoti „STUN“"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:137
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:140
|
||||
msgid "Value in KByte/s, informational only"
|
||||
msgstr "Reikšmė kilobaitais per sekundę (KB/s), tik informacinis"
|
237
package/mtk/applications/luci-app-upnp-mtk-adjust/po/mr/upnp.po
Normal file
237
package/mtk/applications/luci-app-upnp-mtk-adjust/po/mr/upnp.po
Normal file
@ -0,0 +1,237 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-05-19 19:36+0200\n"
|
||||
"PO-Revision-Date: 2020-02-07 09:18+0000\n"
|
||||
"Last-Translator: Prachi Joshi <josprachi@yahoo.com>\n"
|
||||
"Language-Team: Marathi <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsupnp/mr/>\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-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182
|
||||
msgid ""
|
||||
"ACLs specify which external ports may be redirected to which internal "
|
||||
"addresses and ports"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202
|
||||
msgid "Action"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:31
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:113
|
||||
msgid "Active UPnP Redirects"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:119
|
||||
msgid "Advanced Settings"
|
||||
msgstr "प्रगत सेटिंग्ज"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:131
|
||||
msgid "Advertise as IGDv1 device instead of IGDv2"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:203
|
||||
msgid "Allow"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:128
|
||||
msgid "Allow adding forwards only to requesting ip addresses"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150
|
||||
msgid "Announced model number"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:149
|
||||
msgid "Announced serial number"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160
|
||||
msgid "Clean rules interval"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156
|
||||
msgid "Clean rules threshold"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:45
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:85
|
||||
msgid "Client Address"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:47
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:87
|
||||
msgid "Client Port"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:188
|
||||
msgid "Comment"
|
||||
msgstr "टिप्पणी"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:62
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:106
|
||||
msgid "Delete"
|
||||
msgstr "हटवा"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:204
|
||||
msgid "Deny"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:48
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:88
|
||||
msgid "Description"
|
||||
msgstr "वर्णन"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148
|
||||
msgid "Device UUID"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:136
|
||||
msgid "Downlink"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:130
|
||||
msgid "Enable IGDv1 mode"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:125
|
||||
msgid "Enable NAT-PMP functionality"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:124
|
||||
msgid "Enable UPnP functionality"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:133
|
||||
msgid "Enable additional logging"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:127
|
||||
msgid "Enable secure mode"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:44
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:84
|
||||
msgid "External Port"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:190
|
||||
msgid "External ports"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:118
|
||||
msgid "General Settings"
|
||||
msgstr "सामान्य सेटिंग्ज"
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/rpcd/acl.d/luci-app-upnp.json:3
|
||||
msgid "Grant access to upnp procedures"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:46
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:86
|
||||
msgid "Host"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194
|
||||
msgid "Internal addresses"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:198
|
||||
msgid "Internal ports"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:181
|
||||
msgid "MiniUPnP ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:116
|
||||
msgid "MiniUPnP settings"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:152
|
||||
msgid "Notify interval"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:142
|
||||
msgid "Port"
|
||||
msgstr "पोर्ट"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164
|
||||
msgid "Presentation URL"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:83
|
||||
msgid "Protocol"
|
||||
msgstr "प्रोटोकॉल"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:134
|
||||
msgid "Puts extra debugging information into the system log"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:146
|
||||
msgid "Report system instead of daemon uptime"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172
|
||||
msgid "STUN Host"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:176
|
||||
msgid "STUN Port"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:121
|
||||
msgid "Start UPnP and NAT-PMP service"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:70
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:110
|
||||
msgid "There are no active redirects."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/luci/menu.d/luci-app-upnp.json:3
|
||||
msgid "UPnP"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:76
|
||||
msgid ""
|
||||
"UPnP allows clients in the local network to automatically configure the "
|
||||
"router."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:167
|
||||
msgid "UPnP lease file"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:75
|
||||
msgid "Universal Plug & Play"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:60
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:56
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100
|
||||
msgid "Unknown"
|
||||
msgstr "अज्ञात"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:139
|
||||
msgid "Uplink"
|
||||
msgstr "अपलिंक"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:170
|
||||
msgid "Use STUN"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:137
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:140
|
||||
msgid "Value in KByte/s, informational only"
|
||||
msgstr ""
|
235
package/mtk/applications/luci-app-upnp-mtk-adjust/po/ms/upnp.po
Normal file
235
package/mtk/applications/luci-app-upnp-mtk-adjust/po/ms/upnp.po
Normal file
@ -0,0 +1,235 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"PO-Revision-Date: 2024-01-22 09:21+0000\n"
|
||||
"Last-Translator: Abdul Muizz Bin Abdul Jalil <abmuizz@gmail.com>\n"
|
||||
"Language-Team: Malay <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsupnp/ms/>\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 5.4-dev\n"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182
|
||||
msgid ""
|
||||
"ACLs specify which external ports may be redirected to which internal "
|
||||
"addresses and ports"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202
|
||||
msgid "Action"
|
||||
msgstr "Tindakan"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:31
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:113
|
||||
msgid "Active UPnP Redirects"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:119
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Tetapan Lanjutan"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:131
|
||||
msgid "Advertise as IGDv1 device instead of IGDv2"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:203
|
||||
msgid "Allow"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:128
|
||||
msgid "Allow adding forwards only to requesting ip addresses"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150
|
||||
msgid "Announced model number"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:149
|
||||
msgid "Announced serial number"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160
|
||||
msgid "Clean rules interval"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156
|
||||
msgid "Clean rules threshold"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:45
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:85
|
||||
msgid "Client Address"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:47
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:87
|
||||
msgid "Client Port"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:188
|
||||
msgid "Comment"
|
||||
msgstr "Ulasan"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:62
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:106
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:204
|
||||
msgid "Deny"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:48
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:88
|
||||
msgid "Description"
|
||||
msgstr "Keterangan"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148
|
||||
msgid "Device UUID"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:136
|
||||
msgid "Downlink"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:130
|
||||
msgid "Enable IGDv1 mode"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:125
|
||||
msgid "Enable NAT-PMP functionality"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:124
|
||||
msgid "Enable UPnP functionality"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:133
|
||||
msgid "Enable additional logging"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:127
|
||||
msgid "Enable secure mode"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:44
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:84
|
||||
msgid "External Port"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:190
|
||||
msgid "External ports"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:118
|
||||
msgid "General Settings"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/rpcd/acl.d/luci-app-upnp.json:3
|
||||
msgid "Grant access to upnp procedures"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:46
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:86
|
||||
msgid "Host"
|
||||
msgstr "Hos"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194
|
||||
msgid "Internal addresses"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:198
|
||||
msgid "Internal ports"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:181
|
||||
msgid "MiniUPnP ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:116
|
||||
msgid "MiniUPnP settings"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:152
|
||||
msgid "Notify interval"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:142
|
||||
msgid "Port"
|
||||
msgstr "Port"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164
|
||||
msgid "Presentation URL"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:83
|
||||
msgid "Protocol"
|
||||
msgstr "Protokol"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:134
|
||||
msgid "Puts extra debugging information into the system log"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:146
|
||||
msgid "Report system instead of daemon uptime"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172
|
||||
msgid "STUN Host"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:176
|
||||
msgid "STUN Port"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:121
|
||||
msgid "Start UPnP and NAT-PMP service"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:70
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:110
|
||||
msgid "There are no active redirects."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/luci/menu.d/luci-app-upnp.json:3
|
||||
msgid "UPnP"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:76
|
||||
msgid ""
|
||||
"UPnP allows clients in the local network to automatically configure the "
|
||||
"router."
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:167
|
||||
msgid "UPnP lease file"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:75
|
||||
msgid "Universal Plug & Play"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:60
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:56
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100
|
||||
msgid "Unknown"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:139
|
||||
msgid "Uplink"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:170
|
||||
msgid "Use STUN"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:137
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:140
|
||||
msgid "Value in KByte/s, informational only"
|
||||
msgstr ""
|
@ -0,0 +1,238 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"PO-Revision-Date: 2024-01-01 08:05+0000\n"
|
||||
"Last-Translator: Allan Nordhøy <epost@anotheragency.no>\n"
|
||||
"Language-Team: Norwegian Bokmål <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsupnp/nb_NO/>\n"
|
||||
"Language: nb_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 5.4-dev\n"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182
|
||||
msgid ""
|
||||
"ACLs specify which external ports may be redirected to which internal "
|
||||
"addresses and ports"
|
||||
msgstr ""
|
||||
"ACL angir hvilke eksterne porter som kan bli viderekoblet, og til hvilke "
|
||||
"interne adresser og porter."
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202
|
||||
msgid "Action"
|
||||
msgstr "Handling"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:31
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:113
|
||||
msgid "Active UPnP Redirects"
|
||||
msgstr "Aktive UPnP Viderekoblinger"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:119
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Avanserte innstillinger"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:131
|
||||
msgid "Advertise as IGDv1 device instead of IGDv2"
|
||||
msgstr "Annonser som IGDv1-enhet istedenfor IGDv2"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:203
|
||||
msgid "Allow"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:128
|
||||
msgid "Allow adding forwards only to requesting ip addresses"
|
||||
msgstr "Tillat videkobling kun til IP adresser som ber om det"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150
|
||||
msgid "Announced model number"
|
||||
msgstr "Annonsert modellnummer"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:149
|
||||
msgid "Announced serial number"
|
||||
msgstr "Annonsert serienummer"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160
|
||||
msgid "Clean rules interval"
|
||||
msgstr "Nullstill UPnP Viderekoblinger intervall"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156
|
||||
msgid "Clean rules threshold"
|
||||
msgstr "Nullstill UPnP terskel"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:45
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:85
|
||||
msgid "Client Address"
|
||||
msgstr "Klient adresse"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:47
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:87
|
||||
msgid "Client Port"
|
||||
msgstr "Klient port"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:188
|
||||
msgid "Comment"
|
||||
msgstr "Kommentar"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:62
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:106
|
||||
msgid "Delete"
|
||||
msgstr "Slett"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:204
|
||||
msgid "Deny"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:48
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:88
|
||||
msgid "Description"
|
||||
msgstr "Beskrivelse"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148
|
||||
msgid "Device UUID"
|
||||
msgstr "Enhet UUID"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:136
|
||||
msgid "Downlink"
|
||||
msgstr "Nedlinje"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:130
|
||||
msgid "Enable IGDv1 mode"
|
||||
msgstr "Skru på IGDv1-modus"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:125
|
||||
msgid "Enable NAT-PMP functionality"
|
||||
msgstr "Aktiver NAT-PMP funksjonalitet"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:124
|
||||
msgid "Enable UPnP functionality"
|
||||
msgstr "Aktiver UPnP funksjonalitet"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:133
|
||||
msgid "Enable additional logging"
|
||||
msgstr "Aktiver tilleggs logging"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:127
|
||||
msgid "Enable secure mode"
|
||||
msgstr "Aktiver sikker modus"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:44
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:84
|
||||
msgid "External Port"
|
||||
msgstr "Ekstern port"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:190
|
||||
msgid "External ports"
|
||||
msgstr "Eksterne porter"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:118
|
||||
msgid "General Settings"
|
||||
msgstr "Generelle innstillinger"
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/rpcd/acl.d/luci-app-upnp.json:3
|
||||
#, fuzzy
|
||||
msgid "Grant access to upnp procedures"
|
||||
msgstr "Innvilg tilgang til UPnP-muligheter"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:46
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:86
|
||||
msgid "Host"
|
||||
msgstr "Vert"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194
|
||||
msgid "Internal addresses"
|
||||
msgstr "Interne adresser"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:198
|
||||
msgid "Internal ports"
|
||||
msgstr "Interne porter"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:181
|
||||
msgid "MiniUPnP ACLs"
|
||||
msgstr "MiniUPnP ACL'er"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:116
|
||||
msgid "MiniUPnP settings"
|
||||
msgstr "MiniUPnP Innstillinger"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:152
|
||||
msgid "Notify interval"
|
||||
msgstr "Informasjons intervall"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:142
|
||||
msgid "Port"
|
||||
msgstr "Port"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164
|
||||
msgid "Presentation URL"
|
||||
msgstr "Presentasjon URL"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:83
|
||||
msgid "Protocol"
|
||||
msgstr "Protokoll"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:134
|
||||
msgid "Puts extra debugging information into the system log"
|
||||
msgstr "Setter ekstra debugging informasjon i systemloggen"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:146
|
||||
msgid "Report system instead of daemon uptime"
|
||||
msgstr "Rapporter systemets oppetid istedenfor daemon oppetid"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172
|
||||
msgid "STUN Host"
|
||||
msgstr "STUN-vert"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:176
|
||||
msgid "STUN Port"
|
||||
msgstr "STUN-port"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:121
|
||||
msgid "Start UPnP and NAT-PMP service"
|
||||
msgstr "Start UPnP og NAT-PMP tjenesten"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:70
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:110
|
||||
msgid "There are no active redirects."
|
||||
msgstr "Det finnes ingen aktive viderekoblinger"
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/luci/menu.d/luci-app-upnp.json:3
|
||||
msgid "UPnP"
|
||||
msgstr "UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:76
|
||||
msgid ""
|
||||
"UPnP allows clients in the local network to automatically configure the "
|
||||
"router."
|
||||
msgstr ""
|
||||
"UPnP gjør at klientene i det lokale nettverket automatisk kan konfigurere "
|
||||
"ruteren."
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:167
|
||||
msgid "UPnP lease file"
|
||||
msgstr "UPnP leie fil"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:75
|
||||
msgid "Universal Plug & Play"
|
||||
msgstr "Universal Plug & Play"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:60
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:56
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100
|
||||
msgid "Unknown"
|
||||
msgstr "Ukjent"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:139
|
||||
msgid "Uplink"
|
||||
msgstr "Opplinje"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:170
|
||||
msgid "Use STUN"
|
||||
msgstr "Bruk STUN"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:137
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:140
|
||||
msgid "Value in KByte/s, informational only"
|
||||
msgstr "Verdi i KByte/sek, kun for informasjon"
|
240
package/mtk/applications/luci-app-upnp-mtk-adjust/po/pl/upnp.po
Normal file
240
package/mtk/applications/luci-app-upnp-mtk-adjust/po/pl/upnp.po
Normal file
@ -0,0 +1,240 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"PO-Revision-Date: 2024-03-10 22:01+0000\n"
|
||||
"Last-Translator: Matthaiks <kitynska@gmail.com>\n"
|
||||
"Language-Team: Polish <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsupnp/pl/>\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 5.5-dev\n"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182
|
||||
msgid ""
|
||||
"ACLs specify which external ports may be redirected to which internal "
|
||||
"addresses and ports"
|
||||
msgstr ""
|
||||
"Listy kontroli dostępu (ang. ACL) określają jakie porty mogą być "
|
||||
"przekierowane do jakich wewnętrznych adresów i portów"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202
|
||||
msgid "Action"
|
||||
msgstr "Akcja"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:31
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:113
|
||||
msgid "Active UPnP Redirects"
|
||||
msgstr "Aktywne przekierowania UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:119
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Ustawienia zaawansowane"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:131
|
||||
msgid "Advertise as IGDv1 device instead of IGDv2"
|
||||
msgstr "Rozgłaszanie jako urządzenie IGDv1 zamiast jako IGDv2"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:203
|
||||
msgid "Allow"
|
||||
msgstr "Zezwól"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:128
|
||||
msgid "Allow adding forwards only to requesting ip addresses"
|
||||
msgstr "Zezwól na dodawanie przekazywań tylko do odpytujących adresów IP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150
|
||||
msgid "Announced model number"
|
||||
msgstr "Rozgłaszany numer modelu"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:149
|
||||
msgid "Announced serial number"
|
||||
msgstr "Rozgłaszany numer seryjny"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160
|
||||
msgid "Clean rules interval"
|
||||
msgstr "Interwał czyszczenia reguł"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156
|
||||
msgid "Clean rules threshold"
|
||||
msgstr "Próg czyszczenia reguł"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:45
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:85
|
||||
msgid "Client Address"
|
||||
msgstr "Adres klienta"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:47
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:87
|
||||
msgid "Client Port"
|
||||
msgstr "Port klienta"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:188
|
||||
msgid "Comment"
|
||||
msgstr "Komentarz"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:62
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:106
|
||||
msgid "Delete"
|
||||
msgstr "Usuń"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:204
|
||||
msgid "Deny"
|
||||
msgstr "Odmów"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:48
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:88
|
||||
msgid "Description"
|
||||
msgstr "Opis"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148
|
||||
msgid "Device UUID"
|
||||
msgstr "UUID urządzenia"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:136
|
||||
msgid "Downlink"
|
||||
msgstr "Pobieranie"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:130
|
||||
msgid "Enable IGDv1 mode"
|
||||
msgstr "Włącz tryb IGDv1"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:125
|
||||
msgid "Enable NAT-PMP functionality"
|
||||
msgstr "Włącz funkcjonalność NAT‑PMP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:124
|
||||
msgid "Enable UPnP functionality"
|
||||
msgstr "Włącz funkcjonalność UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:133
|
||||
msgid "Enable additional logging"
|
||||
msgstr "Włącz dodatkowe rejestrowanie"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:127
|
||||
msgid "Enable secure mode"
|
||||
msgstr "Włącz tryb bezpieczny"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:44
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:84
|
||||
msgid "External Port"
|
||||
msgstr "Port zewnętrzny"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:190
|
||||
msgid "External ports"
|
||||
msgstr "Porty zewnętrzne"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:118
|
||||
msgid "General Settings"
|
||||
msgstr "Ustawienia główne"
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/rpcd/acl.d/luci-app-upnp.json:3
|
||||
msgid "Grant access to upnp procedures"
|
||||
msgstr "Udziel dostępu do procedur UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:46
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:86
|
||||
msgid "Host"
|
||||
msgstr "Host"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194
|
||||
msgid "Internal addresses"
|
||||
msgstr "Adresy wewnętrzne"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:198
|
||||
msgid "Internal ports"
|
||||
msgstr "Porty wewnętrzne"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:181
|
||||
msgid "MiniUPnP ACLs"
|
||||
msgstr "Listy kontroli dostępu MiniUPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:116
|
||||
msgid "MiniUPnP settings"
|
||||
msgstr "Ustawienia MiniUPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:152
|
||||
msgid "Notify interval"
|
||||
msgstr "Interwał powiadamiania"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:142
|
||||
msgid "Port"
|
||||
msgstr "Port"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164
|
||||
msgid "Presentation URL"
|
||||
msgstr "Adres URL prezentacji"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:83
|
||||
msgid "Protocol"
|
||||
msgstr "Protokół"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:134
|
||||
msgid "Puts extra debugging information into the system log"
|
||||
msgstr ""
|
||||
"Umieszcza dodatkowe informacje dotyczące debugowania w dzienniku systemowym"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:146
|
||||
msgid "Report system instead of daemon uptime"
|
||||
msgstr "Zgłaszaj czas pracy systemu zamiast czas pracy usługi"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172
|
||||
msgid "STUN Host"
|
||||
msgstr "Host STUN"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:176
|
||||
msgid "STUN Port"
|
||||
msgstr "Port STUN"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:121
|
||||
msgid "Start UPnP and NAT-PMP service"
|
||||
msgstr "Uruchom usługi UPnP i NAT‑PMP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:70
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:110
|
||||
msgid "There are no active redirects."
|
||||
msgstr "Nie ma aktywnych przekierowań."
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/luci/menu.d/luci-app-upnp.json:3
|
||||
msgid "UPnP"
|
||||
msgstr "UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:76
|
||||
msgid ""
|
||||
"UPnP allows clients in the local network to automatically configure the "
|
||||
"router."
|
||||
msgstr ""
|
||||
"UPnP umożliwia klientom w sieci lokalnej automatyczne konfigurowanie routera."
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:167
|
||||
msgid "UPnP lease file"
|
||||
msgstr "Plik dzierżawy UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:75
|
||||
msgid "Universal Plug & Play"
|
||||
msgstr "Universal Plug & Play"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:60
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:56
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100
|
||||
msgid "Unknown"
|
||||
msgstr "Nieznany"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:139
|
||||
msgid "Uplink"
|
||||
msgstr "Wysyłanie"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:170
|
||||
msgid "Use STUN"
|
||||
msgstr "Użyj STUN"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:137
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:140
|
||||
msgid "Value in KByte/s, informational only"
|
||||
msgstr "Wartość w KB/s, tylko informacyjna"
|
242
package/mtk/applications/luci-app-upnp-mtk-adjust/po/pt/upnp.po
Normal file
242
package/mtk/applications/luci-app-upnp-mtk-adjust/po/pt/upnp.po
Normal file
@ -0,0 +1,242 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-05-26 19:03+0200\n"
|
||||
"PO-Revision-Date: 2024-07-20 20:09+0000\n"
|
||||
"Last-Translator: ssantos <ssantos@web.de>\n"
|
||||
"Language-Team: Portuguese <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsupnp/pt/>\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 5.7-dev\n"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182
|
||||
msgid ""
|
||||
"ACLs specify which external ports may be redirected to which internal "
|
||||
"addresses and ports"
|
||||
msgstr ""
|
||||
"Os ACL especificam quais as portas externas que podem ser redirecionadas "
|
||||
"para que endereços internos e portas"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202
|
||||
msgid "Action"
|
||||
msgstr "Ação"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:31
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:113
|
||||
msgid "Active UPnP Redirects"
|
||||
msgstr "Redirecionamentos ativos da UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:119
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Configurações avançadas"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:131
|
||||
msgid "Advertise as IGDv1 device instead of IGDv2"
|
||||
msgstr "Anuncie como aparelho IGDv1 em vez de IGDv2"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:203
|
||||
msgid "Allow"
|
||||
msgstr "Permitir"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:128
|
||||
msgid "Allow adding forwards only to requesting ip addresses"
|
||||
msgstr ""
|
||||
"Permitir a adição de encaminhamentos apenas para solicitar endereços IP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150
|
||||
msgid "Announced model number"
|
||||
msgstr "Número modelo anunciado"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:149
|
||||
msgid "Announced serial number"
|
||||
msgstr "Número de série anunciado"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160
|
||||
msgid "Clean rules interval"
|
||||
msgstr "Limpar intervalo de regras"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156
|
||||
msgid "Clean rules threshold"
|
||||
msgstr "Limpar limiar de regras"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:45
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:85
|
||||
msgid "Client Address"
|
||||
msgstr "Endereço do Cliente"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:47
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:87
|
||||
msgid "Client Port"
|
||||
msgstr "Porta do Cliente"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:188
|
||||
msgid "Comment"
|
||||
msgstr "Comentário"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:62
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:106
|
||||
msgid "Delete"
|
||||
msgstr "Apagar"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:204
|
||||
msgid "Deny"
|
||||
msgstr "Negar"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:48
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:88
|
||||
msgid "Description"
|
||||
msgstr "Descrição"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148
|
||||
msgid "Device UUID"
|
||||
msgstr "UUID do aparelho"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:136
|
||||
msgid "Downlink"
|
||||
msgstr "Downlink"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:130
|
||||
msgid "Enable IGDv1 mode"
|
||||
msgstr "Ativar o modo IGDv1"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:125
|
||||
msgid "Enable NAT-PMP functionality"
|
||||
msgstr "Ativar a funcionalidade NAT-PMP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:124
|
||||
msgid "Enable UPnP functionality"
|
||||
msgstr "Ativar a funcionalidade UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:133
|
||||
msgid "Enable additional logging"
|
||||
msgstr "Ativar log adicional"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:127
|
||||
msgid "Enable secure mode"
|
||||
msgstr "Ativar o modo seguro"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:44
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:84
|
||||
msgid "External Port"
|
||||
msgstr "Porta externa"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:190
|
||||
msgid "External ports"
|
||||
msgstr "Portas externas"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:118
|
||||
msgid "General Settings"
|
||||
msgstr "Configurações gerais"
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/rpcd/acl.d/luci-app-upnp.json:3
|
||||
msgid "Grant access to upnp procedures"
|
||||
msgstr "Conceder acesso UCI aos procedimentos upnp"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:46
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:86
|
||||
msgid "Host"
|
||||
msgstr "Host"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194
|
||||
msgid "Internal addresses"
|
||||
msgstr "Endereços internos"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:198
|
||||
msgid "Internal ports"
|
||||
msgstr "Portas internas"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:181
|
||||
msgid "MiniUPnP ACLs"
|
||||
msgstr "ACLs MiniUPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:116
|
||||
msgid "MiniUPnP settings"
|
||||
msgstr "Definições MiniUPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:152
|
||||
msgid "Notify interval"
|
||||
msgstr "Intervalo de Notificação"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:142
|
||||
msgid "Port"
|
||||
msgstr "Porta"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164
|
||||
msgid "Presentation URL"
|
||||
msgstr "URL de apresentação"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:83
|
||||
msgid "Protocol"
|
||||
msgstr "Protocolo"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:134
|
||||
msgid "Puts extra debugging information into the system log"
|
||||
msgstr "Põe informações de depuração extras no log do sistema"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:146
|
||||
msgid "Report system instead of daemon uptime"
|
||||
msgstr "Relata uptime do sistema ao invés da do daemon"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172
|
||||
msgid "STUN Host"
|
||||
msgstr "Host STUN"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:176
|
||||
msgid "STUN Port"
|
||||
msgstr "Porta STUN"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:121
|
||||
msgid "Start UPnP and NAT-PMP service"
|
||||
msgstr "Iniciar serviço UPnP e NAT-PMP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:70
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:110
|
||||
msgid "There are no active redirects."
|
||||
msgstr "Não há redirecionamentos ativos."
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/luci/menu.d/luci-app-upnp.json:3
|
||||
msgid "UPnP"
|
||||
msgstr "UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:76
|
||||
msgid ""
|
||||
"UPnP allows clients in the local network to automatically configure the "
|
||||
"router."
|
||||
msgstr ""
|
||||
"UPnP permite que os clientes da rede local configurem o router "
|
||||
"automaticamente."
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:167
|
||||
msgid "UPnP lease file"
|
||||
msgstr "Ficheiro de concessão UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:75
|
||||
msgid "Universal Plug & Play"
|
||||
msgstr "Plug & Play Universal"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:60
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:56
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100
|
||||
msgid "Unknown"
|
||||
msgstr "Desconhecido"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:139
|
||||
msgid "Uplink"
|
||||
msgstr "Ligação ascendente"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:170
|
||||
msgid "Use STUN"
|
||||
msgstr "Utilizar STUN"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:137
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:140
|
||||
msgid "Value in KByte/s, informational only"
|
||||
msgstr "Valor em KByte/s, apenas informativo"
|
@ -0,0 +1,241 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-06-10 03:41+0200\n"
|
||||
"PO-Revision-Date: 2024-07-19 19:31+0000\n"
|
||||
"Last-Translator: Janderson Vieira Santos <jandersonvs79@gmail.com>\n"
|
||||
"Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/"
|
||||
"openwrt/luciapplicationsupnp/pt_BR/>\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 5.7-dev\n"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182
|
||||
msgid ""
|
||||
"ACLs specify which external ports may be redirected to which internal "
|
||||
"addresses and ports"
|
||||
msgstr ""
|
||||
"ACLs especificam quais portas externas podem ser redirecionadas para quais "
|
||||
"endereços e portas internos"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202
|
||||
msgid "Action"
|
||||
msgstr "Ação"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:31
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:113
|
||||
msgid "Active UPnP Redirects"
|
||||
msgstr "Redirecionamentos UPnP Ativos"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:119
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Configurações avançadas"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:131
|
||||
msgid "Advertise as IGDv1 device instead of IGDv2"
|
||||
msgstr "Anuncie-se como um dispositivo IGDv1 ao invés de um IGDv2"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:203
|
||||
msgid "Allow"
|
||||
msgstr "Permitir"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:128
|
||||
msgid "Allow adding forwards only to requesting ip addresses"
|
||||
msgstr ""
|
||||
"Permite adicionar encaminhamento apenas para o endereço IP requisitante"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150
|
||||
msgid "Announced model number"
|
||||
msgstr "Número do modelo anunciado"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:149
|
||||
msgid "Announced serial number"
|
||||
msgstr "Número de série anunciado"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160
|
||||
msgid "Clean rules interval"
|
||||
msgstr "Intervalo de limpeza das regras"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156
|
||||
msgid "Clean rules threshold"
|
||||
msgstr "Limiar de limpeza das regras"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:45
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:85
|
||||
msgid "Client Address"
|
||||
msgstr "Endereço do cliente"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:47
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:87
|
||||
msgid "Client Port"
|
||||
msgstr "Porta do Cliente"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:188
|
||||
msgid "Comment"
|
||||
msgstr "Comentário"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:62
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:106
|
||||
msgid "Delete"
|
||||
msgstr "Apagar"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:204
|
||||
msgid "Deny"
|
||||
msgstr "Negar"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:48
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:88
|
||||
msgid "Description"
|
||||
msgstr "Descrição"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148
|
||||
msgid "Device UUID"
|
||||
msgstr "UUID do Dispositivo"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:136
|
||||
msgid "Downlink"
|
||||
msgstr "Velocidade de recebimento do enlace (downlink)"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:130
|
||||
msgid "Enable IGDv1 mode"
|
||||
msgstr "Habilitar o modo IGDv1"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:125
|
||||
msgid "Enable NAT-PMP functionality"
|
||||
msgstr "Habilite a função NAT-PMP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:124
|
||||
msgid "Enable UPnP functionality"
|
||||
msgstr "Habilite a função UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:133
|
||||
msgid "Enable additional logging"
|
||||
msgstr "Habilite registros adicionais"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:127
|
||||
msgid "Enable secure mode"
|
||||
msgstr "Habilite modo seguro"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:44
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:84
|
||||
msgid "External Port"
|
||||
msgstr "Porta externa"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:190
|
||||
msgid "External ports"
|
||||
msgstr "Portas Externas"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:118
|
||||
msgid "General Settings"
|
||||
msgstr "Configurações gerais"
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/rpcd/acl.d/luci-app-upnp.json:3
|
||||
msgid "Grant access to upnp procedures"
|
||||
msgstr "Conceda acesso UCI aos procedimentos upnp"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:46
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:86
|
||||
msgid "Host"
|
||||
msgstr "Host"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194
|
||||
msgid "Internal addresses"
|
||||
msgstr "Endereços internos"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:198
|
||||
msgid "Internal ports"
|
||||
msgstr "Portas internas"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:181
|
||||
msgid "MiniUPnP ACLs"
|
||||
msgstr "ACLs do MiniUPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:116
|
||||
msgid "MiniUPnP settings"
|
||||
msgstr "Configurações do MiniUPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:152
|
||||
msgid "Notify interval"
|
||||
msgstr "Intervalo de notificação"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:142
|
||||
msgid "Port"
|
||||
msgstr "Porta"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164
|
||||
msgid "Presentation URL"
|
||||
msgstr "URL de Apresentação"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:83
|
||||
msgid "Protocol"
|
||||
msgstr "Protocolo"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:134
|
||||
msgid "Puts extra debugging information into the system log"
|
||||
msgstr "Envie informações extra de depuração ao registro do sistema"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:146
|
||||
msgid "Report system instead of daemon uptime"
|
||||
msgstr "Informe o tempo de vida do sistema ao invés do tempo do processo"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172
|
||||
msgid "STUN Host"
|
||||
msgstr "Host STUN"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:176
|
||||
msgid "STUN Port"
|
||||
msgstr "Porta STUN"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:121
|
||||
msgid "Start UPnP and NAT-PMP service"
|
||||
msgstr "Dispare os serviços de UPnP e NAT-PMP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:70
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:110
|
||||
msgid "There are no active redirects."
|
||||
msgstr "Não existe redirecionamentos ativos."
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/luci/menu.d/luci-app-upnp.json:3
|
||||
msgid "UPnP"
|
||||
msgstr "UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:76
|
||||
msgid ""
|
||||
"UPnP allows clients in the local network to automatically configure the "
|
||||
"router."
|
||||
msgstr ""
|
||||
"UPnP permite os clientes da rede local configurem automaticamente o roteador."
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:167
|
||||
msgid "UPnP lease file"
|
||||
msgstr "Arquivo de concessão do UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:75
|
||||
msgid "Universal Plug & Play"
|
||||
msgstr "Plug & Play Universal"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:60
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:56
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100
|
||||
msgid "Unknown"
|
||||
msgstr "Desconhecido"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:139
|
||||
msgid "Uplink"
|
||||
msgstr "Velocidade de envio do enlace (uplink)"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:170
|
||||
msgid "Use STUN"
|
||||
msgstr "Use o STUN"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:137
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:140
|
||||
msgid "Value in KByte/s, informational only"
|
||||
msgstr "Valores em KByte/s, apenas informativas"
|
239
package/mtk/applications/luci-app-upnp-mtk-adjust/po/ro/upnp.po
Normal file
239
package/mtk/applications/luci-app-upnp-mtk-adjust/po/ro/upnp.po
Normal file
@ -0,0 +1,239 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"PO-Revision-Date: 2022-01-25 22:56+0000\n"
|
||||
"Last-Translator: CRISTIAN ANDREI <cristianvdr@gmail.com>\n"
|
||||
"Language-Team: Romanian <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsupnp/ro/>\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.11-dev\n"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182
|
||||
msgid ""
|
||||
"ACLs specify which external ports may be redirected to which internal "
|
||||
"addresses and ports"
|
||||
msgstr ""
|
||||
"ACL-urile specifica porturile externe care pot fi redirectate si spre ce "
|
||||
"adrese si porturi interne"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202
|
||||
msgid "Action"
|
||||
msgstr "Acțiune"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:31
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:113
|
||||
msgid "Active UPnP Redirects"
|
||||
msgstr "Redirecturi active UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:119
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Setări avansate"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:131
|
||||
msgid "Advertise as IGDv1 device instead of IGDv2"
|
||||
msgstr "Publicitate ca dispozitiv IGDv1 în loc de IGDv2"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:203
|
||||
msgid "Allow"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:128
|
||||
msgid "Allow adding forwards only to requesting ip addresses"
|
||||
msgstr "Permite adaugarea forward-urilor doar catre adresele ip solicitante"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150
|
||||
msgid "Announced model number"
|
||||
msgstr "Numărul modelului anunțat"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:149
|
||||
msgid "Announced serial number"
|
||||
msgstr "Număr de serie anunțat"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160
|
||||
msgid "Clean rules interval"
|
||||
msgstr "Intervalul de curatare reguli"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156
|
||||
msgid "Clean rules threshold"
|
||||
msgstr "Limita de curatare reguli"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:45
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:85
|
||||
msgid "Client Address"
|
||||
msgstr "Adresa client"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:47
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:87
|
||||
msgid "Client Port"
|
||||
msgstr "Port client"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:188
|
||||
msgid "Comment"
|
||||
msgstr "Comentariu"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:62
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:106
|
||||
msgid "Delete"
|
||||
msgstr "Ștergeți"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:204
|
||||
msgid "Deny"
|
||||
msgstr ""
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:48
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:88
|
||||
msgid "Description"
|
||||
msgstr "Descriere"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148
|
||||
msgid "Device UUID"
|
||||
msgstr "UUID al dispozitivului"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:136
|
||||
msgid "Downlink"
|
||||
msgstr "Link în jos"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:130
|
||||
msgid "Enable IGDv1 mode"
|
||||
msgstr "Activează modul IGDv1"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:125
|
||||
msgid "Enable NAT-PMP functionality"
|
||||
msgstr "Activeaza functionalitatea NAT-PMP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:124
|
||||
msgid "Enable UPnP functionality"
|
||||
msgstr "Activeaza functionalitatea UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:133
|
||||
msgid "Enable additional logging"
|
||||
msgstr "Activeaza log-area aditionala"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:127
|
||||
msgid "Enable secure mode"
|
||||
msgstr "Activeaza modul securizat"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:44
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:84
|
||||
msgid "External Port"
|
||||
msgstr "Port extern"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:190
|
||||
msgid "External ports"
|
||||
msgstr "Porturi externe"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:118
|
||||
msgid "General Settings"
|
||||
msgstr "Setări generale"
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/rpcd/acl.d/luci-app-upnp.json:3
|
||||
msgid "Grant access to upnp procedures"
|
||||
msgstr "Acordarea accesului la procedurile upnp"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:46
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:86
|
||||
msgid "Host"
|
||||
msgstr "Gazdă"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194
|
||||
msgid "Internal addresses"
|
||||
msgstr "Adrese interne"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:198
|
||||
msgid "Internal ports"
|
||||
msgstr "Porturi interne"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:181
|
||||
msgid "MiniUPnP ACLs"
|
||||
msgstr "Liste de acces mini UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:116
|
||||
msgid "MiniUPnP settings"
|
||||
msgstr "Setari mini UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:152
|
||||
msgid "Notify interval"
|
||||
msgstr "Interval de notificare"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:142
|
||||
msgid "Port"
|
||||
msgstr "Port"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164
|
||||
msgid "Presentation URL"
|
||||
msgstr "Adresa de prezentare"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:83
|
||||
msgid "Protocol"
|
||||
msgstr "Protocol"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:134
|
||||
msgid "Puts extra debugging information into the system log"
|
||||
msgstr "Pune informatii utile suplimentare in log-ul de sistem"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:146
|
||||
msgid "Report system instead of daemon uptime"
|
||||
msgstr "Raporteaza timpul de functionare de sistem in loc de serviciu"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172
|
||||
msgid "STUN Host"
|
||||
msgstr "Gazda STUN"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:176
|
||||
msgid "STUN Port"
|
||||
msgstr "Portul STUN"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:121
|
||||
msgid "Start UPnP and NAT-PMP service"
|
||||
msgstr "Porniți UPnP și serviciul NAT-PMP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:70
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:66
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:110
|
||||
msgid "There are no active redirects."
|
||||
msgstr "Nu exista redirecturi active."
|
||||
|
||||
#: applications/luci-app-upnp/root/usr/share/luci/menu.d/luci-app-upnp.json:3
|
||||
msgid "UPnP"
|
||||
msgstr "UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:76
|
||||
msgid ""
|
||||
"UPnP allows clients in the local network to automatically configure the "
|
||||
"router."
|
||||
msgstr ""
|
||||
"UPNP permite clientulor din reteaua locala sa configureze automat routerul."
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:167
|
||||
msgid "UPnP lease file"
|
||||
msgstr "Fisierul de conexiuni UPnP"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:75
|
||||
msgid "Universal Plug & Play"
|
||||
msgstr "Plug & Play universal"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:60
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:56
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100
|
||||
msgid "Unknown"
|
||||
msgstr "Necunoscut"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:139
|
||||
msgid "Uplink"
|
||||
msgstr "Legătură ascendentă"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:170
|
||||
msgid "Use STUN"
|
||||
msgstr "Utilizați STUN"
|
||||
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:137
|
||||
#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:140
|
||||
msgid "Value in KByte/s, informational only"
|
||||
msgstr "Valorea in KOcteti/s , doar informational"
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user