diff options
Diffstat (limited to 'modules')
10 files changed, 69 insertions, 59 deletions
diff --git a/modules/luci-base/htdocs/luci-static/resources/cbi.js b/modules/luci-base/htdocs/luci-static/resources/cbi.js index b66fe684a5..2fc2f09632 100644 --- a/modules/luci-base/htdocs/luci-static/resources/cbi.js +++ b/modules/luci-base/htdocs/luci-static/resources/cbi.js @@ -614,17 +614,17 @@ String.prototype.format = function() var tm = 0; var ts = (param || 0); - if (ts > 60) { + if (ts > 59) { tm = Math.floor(ts / 60); ts = (ts % 60); } - if (tm > 60) { + if (tm > 59) { th = Math.floor(tm / 60); tm = (tm % 60); } - if (th > 24) { + if (th > 23) { td = Math.floor(th / 24); th = (th % 24); } @@ -752,7 +752,7 @@ function cbi_update_table(table, data, placeholder) { }); if (Array.isArray(data)) { - var n = 0, rows = target.querySelectorAll('tr, .tr'); + var n = 0, rows = target.querySelectorAll('tr, .tr'), trows = []; data.forEach(function(row) { var trow = E('tr', { 'class': 'tr' }); @@ -770,12 +770,16 @@ function cbi_update_table(table, data, placeholder) { trow.classList.add('cbi-rowstyle-%d'.format((n++ % 2) ? 2 : 1)); - if (rows[n]) - target.replaceChild(trow, rows[n]); - else - target.appendChild(trow); + trows[n] = trow; }); + for (var i = 1; i < n; i++) { + if (rows[i]) + target.replaceChild(trows[i], rows[i]); + else + target.appendChild(trows[i]); + } + while (rows[++n]) target.removeChild(rows[n]); diff --git a/modules/luci-base/po/bg/base.po b/modules/luci-base/po/bg/base.po index d571030331..e91f854f6f 100644 --- a/modules/luci-base/po/bg/base.po +++ b/modules/luci-base/po/bg/base.po @@ -1,14 +1,14 @@ msgid "" msgstr "" -"PO-Revision-Date: 2021-06-01 13:26+0000\n" -"Last-Translator: Kalin Iliev <kalin.t.iliev@gmail.com>\n" +"PO-Revision-Date: 2021-07-05 20:29+0000\n" +"Last-Translator: Iskren Mihaylov <iskren.mihaylov91@gmail.com>\n" "Language-Team: Bulgarian <https://hosted.weblate.org/projects/openwrt/luci/" "bg/>\n" "Language: bg\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.7-dev\n" +"X-Generator: Weblate 4.8-dev\n" #: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:1484 msgid "%.1f dB" @@ -930,7 +930,7 @@ msgstr "" #: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:193 msgid "Available" -msgstr "" +msgstr "Налични" #: modules/luci-mod-status/htdocs/luci-static/resources/view/status/bandwidth.js:270 #: modules/luci-mod-status/htdocs/luci-static/resources/view/status/bandwidth.js:280 @@ -4538,7 +4538,7 @@ msgstr "" #: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:358 #: modules/luci-mod-status/htdocs/luci-static/resources/view/status/processes.js:59 msgid "No information available" -msgstr "" +msgstr "Няма налична информация" #: modules/luci-compat/luasrc/model/network/proto_4x6.lua:63 #: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:8 @@ -5602,7 +5602,7 @@ msgstr "" #: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:906 msgid "Remove" -msgstr "" +msgstr "Премахни" #: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:1277 msgid "Remove related device settings from the configuration" @@ -5742,7 +5742,7 @@ msgstr "" #: modules/luci-compat/luasrc/view/cbi/simpleform.htm:66 #: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:1276 msgid "Reset" -msgstr "" +msgstr "Нулирай" #: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:343 msgid "Reset Counters" @@ -5880,7 +5880,7 @@ msgstr "" #: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:219 msgid "SHA256" -msgstr "" +msgstr "SHA256" #: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:59 #: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:276 @@ -5937,7 +5937,7 @@ msgstr "" #: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:433 #: modules/luci-mod-system/htdocs/luci-static/resources/view/system/startup.js:123 msgid "Save" -msgstr "" +msgstr "Запази" #: modules/luci-base/htdocs/luci-static/resources/luci.js:2181 #: modules/luci-base/htdocs/luci-static/resources/ui.js:4072 @@ -6157,7 +6157,7 @@ msgstr "" #: modules/luci-base/htdocs/luci-static/resources/ui.js:3809 #: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:217 msgid "Size" -msgstr "" +msgstr "Размер" #: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:452 msgid "Size of DNS query cache" diff --git a/modules/luci-base/po/es/base.po b/modules/luci-base/po/es/base.po index ffda0c36a7..16b071530a 100644 --- a/modules/luci-base/po/es/base.po +++ b/modules/luci-base/po/es/base.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-06-10 03:41+0200\n" -"PO-Revision-Date: 2021-07-03 18:12+0000\n" +"PO-Revision-Date: 2021-07-05 20:29+0000\n" "Last-Translator: Franco Castillo <castillofrancodamian@gmail.com>\n" "Language-Team: Spanish <https://hosted.weblate.org/projects/openwrt/luci/es/>" "\n" @@ -1991,7 +1991,7 @@ msgstr "Desasociarse en un reconocimiento bajo" #: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:385 msgid "Discard upstream RFC1918 responses" -msgstr "Descartar las respuestas de RFC1918 aguas arriba" +msgstr "Descartar respuestas RFC1918 ascendentes" #: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:198 #: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:722 diff --git a/modules/luci-base/po/ru/base.po b/modules/luci-base/po/ru/base.po index 75d55b0fb0..7ba55b6353 100644 --- a/modules/luci-base/po/ru/base.po +++ b/modules/luci-base/po/ru/base.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: LuCI: base\n" "POT-Creation-Date: 2010-05-09 01:01+0300\n" -"PO-Revision-Date: 2021-06-22 17:33+0000\n" +"PO-Revision-Date: 2021-07-07 15:15+0000\n" "Last-Translator: Anton Kikin <a.a.kikin@gmail.com>\n" "Language-Team: Russian <https://hosted.weblate.org/projects/openwrt/luci/ru/>" "\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 4.7.1-dev\n" +"X-Generator: Weblate 4.8-dev\n" "Project-Info: Это технический перевод, не дословный. Главное-удобный русский " "интерфейс, все проверялось в графическом режиме, совместим с другими apps\n" @@ -1970,7 +1970,7 @@ msgstr "Отключить данную сеть" #: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:32 msgid "Disable this route" -msgstr "" +msgstr "Отключить этот маршрут" #: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:953 #: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1679 @@ -7161,11 +7161,11 @@ msgstr "" #: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:586 msgid "The IP address %h is already used by another static lease" -msgstr "" +msgstr "IP-адрес %h уже используется в другой постоянной аренде" #: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:596 msgid "The IP address is outside of any DHCP pool address range" -msgstr "" +msgstr "IP-адрес находится вне диапазона пула адресов DHCP" #: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:40 msgid "The IPv4 address or the fully-qualified domain name of the remote end." @@ -7200,6 +7200,7 @@ msgid "" "The MAC address %h is already used by another static lease in the same DHCP " "pool" msgstr "" +"MAC-адрес %h уже используется другой постоянной арендой в том же пуле DHCP" #: modules/luci-mod-network/htdocs/luci-static/resources/tools/network.js:586 msgid "The MTU must not exceed the parent device MTU of %d bytes" diff --git a/modules/luci-base/po/tr/base.po b/modules/luci-base/po/tr/base.po index 130c64f55d..95f9a1f31e 100644 --- a/modules/luci-base/po/tr/base.po +++ b/modules/luci-base/po/tr/base.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2021-06-13 21:32+0000\n" -"Last-Translator: semih <semiht@gmail.com>\n" +"PO-Revision-Date: 2021-07-08 16:56+0000\n" +"Last-Translator: Oğuz Ersen <oguzersen@protonmail.com>\n" "Language-Team: Turkish <https://hosted.weblate.org/projects/openwrt/luci/tr/>" "\n" "Language: tr\n" @@ -11,7 +11,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.7-dev\n" +"X-Generator: Weblate 4.8-dev\n" #: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:1484 msgid "%.1f dB" @@ -1944,7 +1944,7 @@ msgstr "Bu ağı devre dışı bırak" #: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:32 msgid "Disable this route" -msgstr "" +msgstr "Bu yönlendirmeyi devre dışı bırak" #: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:953 #: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1679 @@ -7103,11 +7103,11 @@ msgstr "" #: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:586 msgid "The IP address %h is already used by another static lease" -msgstr "" +msgstr "%h IP adresi zaten başka bir statik kiralama tarafından kullanılıyor" #: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:596 msgid "The IP address is outside of any DHCP pool address range" -msgstr "" +msgstr "IP adresi, herhangi bir DHCP havuzu adres aralığının dışında" #: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:40 msgid "The IPv4 address or the fully-qualified domain name of the remote end." @@ -7141,10 +7141,12 @@ msgid "" "The MAC address %h is already used by another static lease in the same DHCP " "pool" msgstr "" +"%h MAC adresi, aynı DHCP havuzunda başka bir statik kiralama tarafından " +"zaten kullanılıyor" #: modules/luci-mod-network/htdocs/luci-static/resources/tools/network.js:586 msgid "The MTU must not exceed the parent device MTU of %d bytes" -msgstr "" +msgstr "MTU, %d baytlık ana aygıt MTU'sunu aşmamalıdır" #: modules/luci-mod-network/htdocs/luci-static/resources/tools/network.js:864 msgid "The VLAN ID must be unique" diff --git a/modules/luci-base/po/zh_Hans/base.po b/modules/luci-base/po/zh_Hans/base.po index 3581194b71..f0373e2a39 100644 --- a/modules/luci-base/po/zh_Hans/base.po +++ b/modules/luci-base/po/zh_Hans/base.po @@ -4,8 +4,8 @@ # msgid "" msgstr "" -"PO-Revision-Date: 2021-07-04 06:42+0000\n" -"Last-Translator: Eric <spice2wolf@gmail.com>\n" +"PO-Revision-Date: 2021-07-05 20:29+0000\n" +"Last-Translator: xiazhang <xz@xia.plus>\n" "Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/" "openwrt/luci/zh_Hans/>\n" "Language: zh_Hans\n" @@ -6364,15 +6364,15 @@ msgstr "" msgid "" "Specifies that duplicate frames (received on inactive ports) should be " "dropped or delivered" -msgstr "明确重复的帧(在非活动端口接收的)应该被丢弃还是交付" +msgstr "指定重复的帧(在非活动端口接收的)应该被丢弃还是交付" #: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:358 msgid "Specifies the ARP link monitoring frequency in milliseconds" -msgstr "明确 ARP 链接监控频率,单位为毫秒" +msgstr "指定 ARP 链接监控频率,单位为毫秒" #: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:366 msgid "Specifies the IP addresses to use for ARP monitoring" -msgstr "明确用于 ARP 监控的 IP 地址" +msgstr "指定用于 ARP 监控的 IP 地址" #: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:395 msgid "Specifies the MII link monitoring frequency in milliseconds" @@ -6428,7 +6428,7 @@ msgstr "" msgid "" "Specifies the minimum number of links that must be active before asserting " "carrier" -msgstr "明确 asserting 运营商前必须处于活跃状态的链接的最小数量" +msgstr "指定 asserting 运营商前必须处于活跃状态的链接的最小数量" #: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:200 msgid "Specifies the mode to be used for this bonding interface" @@ -6478,13 +6478,13 @@ msgstr "指定当活动从属设备发生故障或主从属设备恢复时,主 #: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:244 msgid "Specifies the system priority" -msgstr "明确系统优先级" +msgstr "指定系统优先级" #: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:403 msgid "" "Specifies the time in milliseconds to wait before disabling a slave after a " "link failure detection" -msgstr "指定在检测到链路故障后,在禁用从属设备之前以毫秒为单位的等待时间" +msgstr "指定在检测到链路故障后,在禁用从属设备之前等待的时间(以毫秒为单位)" #: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:411 msgid "" @@ -6505,7 +6505,7 @@ msgstr "" msgid "" "Specifies whether ARP probes and replies should be validated or non-ARP " "traffic should be filtered for link monitoring" -msgstr "明确是否应验证 ARP 探测和应答,或者应为了链路监控目的过滤非 ARP 流量" +msgstr "指定是否应验证 ARP 探测和应答,或者应为了链路监控目的过滤非 ARP 流量" #: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:301 msgid "" @@ -6549,8 +6549,8 @@ msgid "" "header inherits the value of the inner header) or an hexadecimal value " "<code>00..FF</code> (optional)." msgstr "" -"明确一个 TOS (服务类型)。可以是<code>继承</code>(外层消息头继承内部消息头" -"的值)或一个十六进制值<code>00..FF</code>(可选)。" +"指定一个 TOS (服务类型)。可以是<code>继承</code>(外层消息头继承内部消息头的值)或一个十六进制值<code>00.." +"FF</code>(可选)。" #: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:74 #: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:74 @@ -6575,8 +6575,7 @@ msgid "" "inherits the value of the inner header) or an hexadecimal value <code>00.." "FF</code> (optional)." msgstr "" -"明确一个流量类。可以是<code>继承</code>(外层消息头继承内部消息头的值)或一个" -"十六进制值<code>00..FF</code>(可选)。" +"指定一个流量类。可以是<code>继承</code>(外层消息头继承内部消息头的值)或一个十六进制值<code>00..FF</code>(可选)。" #: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:64 #: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:69 @@ -6885,7 +6884,7 @@ msgstr "HE.net 客户端更新设置已经被改变,您现在必须使用用 #: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:586 msgid "The IP address %h is already used by another static lease" -msgstr "IP 地址 %h 已被另一个静态租用使用" +msgstr "IP 地址 %h 已被另一个静态租约使用" #: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:596 msgid "The IP address is outside of any DHCP pool address range" @@ -7102,9 +7101,8 @@ msgid "" "segments. Often there is by default one Uplink port for a connection to the " "next greater network like the internet and other ports for a local network." msgstr "" -"本设备上的网络端口可以组合成多个 <abbr title=\"虚拟局域网\">VLAN</abbr>,其中" -"的计算机可以直接相互通信。<abbr title=\"虚拟局域网\">VLAN</abbr> 也常用于分割" -"不同网段。默认通常是一条上行端口连接运营商,其余端口用于本地子网。" +"本设备上的网络端口可以组合成多个 <abbr title=\"虚拟局域网\">VLAN</abbr>,其中的计算机可以直接相互通信。<abbr " +"title=\"虚拟局域网\">VLAN</abbr> 也常用于分割不同网段。通常是默认一条上行端口连接运营商,其余端口用于本地网络。" #: modules/luci-mod-network/htdocs/luci-static/resources/tools/network.js:569 msgid "The query response interval must be lower than the query interval value" diff --git a/modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js b/modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js index d8083a1e0e..cb1aa99472 100644 --- a/modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js +++ b/modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js @@ -98,9 +98,9 @@ function getDHCPPools() { continue; tasks.push(network.getNetwork(sections[i].interface).then(L.bind(function(section_id, net) { - var cidr = (net.getIPAddrs()[0] || '').split('/'); + var cidr = net ? (net.getIPAddrs()[0] || '').split('/') : null; - if (cidr.length == 2) { + if (cidr && cidr.length == 2) { var net_mask = calculateNetwork(cidr[0], cidr[1]); pools.push({ diff --git a/modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js b/modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js index 5115a69eb6..37d4558edc 100644 --- a/modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js +++ b/modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js @@ -327,7 +327,7 @@ var CBIWifiFrequencyValue = form.Value.extend({ band = '5g'; else if (data[1][i].mhz >= 5925 && data[1][i].mhz <= 7125) band = '6g'; - else if (data[1][i].mhz >= 58329 && data[1][i].mhz <= 69120) + else if (data[1][i].mhz >= 58320 && data[1][i].mhz <= 69120) band = '60g'; else continue; @@ -375,7 +375,8 @@ var CBIWifiFrequencyValue = form.Value.extend({ this.bands = { '': [ '2g', '2.4 GHz', this.channels['2g'].length > 3, - '5g', '5 GHz', this.channels['5g'].length > 3 + '5g', '5 GHz', this.channels['5g'].length > 3, + '60g', '60 GHz', this.channels['60g'].length > 0 ], 'n': [ '2g', '2.4 GHz', this.channels['2g'].length > 3, diff --git a/modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js b/modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js index 69305a2a9c..b93f26875d 100644 --- a/modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js +++ b/modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js @@ -21,7 +21,7 @@ return baseclass.extend({ return Promise.all([ callLuciDHCPLeases(), network.getHostHints(), - uci.load('dhcp') + L.resolveDefault(uci.load('dhcp')) ]); }, @@ -63,7 +63,8 @@ return baseclass.extend({ var leases = Array.isArray(data[0].dhcp_leases) ? data[0].dhcp_leases : [], leases6 = Array.isArray(data[0].dhcp6_leases) ? data[0].dhcp6_leases : [], machints = data[1].getMACHints(false), - hosts = uci.sections('dhcp', 'host'); + hosts = uci.sections('dhcp', 'host'), + isReadonlyView = !L.hasViewPermission(); for (var i = 0; i < hosts.length; i++) { var host = hosts[i]; @@ -87,7 +88,7 @@ return baseclass.extend({ E('th', { 'class': 'th' }, _('IPv4 address')), E('th', { 'class': 'th' }, _('MAC address')), E('th', { 'class': 'th' }, _('Lease time remaining')), - E('th', { 'class': 'th cbi-section-actions' }, _('Static Lease')) + isReadonlyView ? E([]) : E('th', { 'class': 'th cbi-section-actions' }, _('Static Lease')) ]) ]); @@ -108,7 +109,7 @@ return baseclass.extend({ exp ]; - if (lease.macaddr != null) { + if (!isReadonlyView && lease.macaddr != null) { var mac = lease.macaddr.toUpperCase(); rows.push(E('button', { 'class': 'cbi-button cbi-button-apply', @@ -126,7 +127,7 @@ return baseclass.extend({ E('th', { 'class': 'th' }, _('IPv6 address')), E('th', { 'class': 'th' }, _('DUID')), E('th', { 'class': 'th' }, _('Lease time remaining')), - E('th', { 'class': 'th cbi-section-actions' }, _('Static Lease')) + isReadonlyView ? E([]) : E('th', { 'class': 'th cbi-section-actions' }, _('Static Lease')) ]) ]); @@ -157,7 +158,7 @@ return baseclass.extend({ exp ]; - if (lease.duid != null) { + if (!isReadonlyView && lease.duid != null) { var duid = lease.duid.toUpperCase(); rows.push(E('button', { 'class': 'cbi-button cbi-button-apply', diff --git a/modules/luci-mod-status/root/usr/share/rpcd/acl.d/luci-mod-status.json b/modules/luci-mod-status/root/usr/share/rpcd/acl.d/luci-mod-status.json index e23a0ae6b4..3e7d823014 100644 --- a/modules/luci-mod-status/root/usr/share/rpcd/acl.d/luci-mod-status.json +++ b/modules/luci-mod-status/root/usr/share/rpcd/acl.d/luci-mod-status.json @@ -104,6 +104,9 @@ "file": [ "list", "read" ], "system": [ "board", "info" ] } + }, + "write": { + "uci": [ "dhcp" ] } }, |