Merge pull request #798 from thoto/feature_lstat
authorDaniel Dickinson <cshoredaniel@users.noreply.github.com>
Tue, 7 Feb 2017 20:56:02 +0000 (15:56 -0500)
committerGitHub <noreply@github.com>
Tue, 7 Feb 2017 20:56:02 +0000 (15:56 -0500)
luci-lib-nixio: nixio_lstat calls stat instead of lstat

343 files changed:
applications/luci-app-adblock/luasrc/model/cbi/adblock.lua
applications/luci-app-adblock/po/ja/adblock.po [new file with mode: 0644]
applications/luci-app-adblock/po/sv/adblock.po
applications/luci-app-adblock/po/templates/adblock.pot
applications/luci-app-adblock/po/zh-cn/adblock.po
applications/luci-app-aria2/Makefile
applications/luci-app-aria2/luasrc/model/cbi/aria2.lua
applications/luci-app-aria2/luasrc/view/aria2/overview_status.htm [new file with mode: 0644]
applications/luci-app-aria2/luasrc/view/aria2/web_script.htm [deleted file]
applications/luci-app-aria2/po/templates/aria2.po [deleted file]
applications/luci-app-aria2/po/templates/aria2.pot [new file with mode: 0644]
applications/luci-app-aria2/po/zh-cn/aria2.po
applications/luci-app-commands/luasrc/controller/commands.lua
applications/luci-app-commands/luasrc/view/commands.htm
applications/luci-app-commands/luasrc/view/commands_public.htm [new file with mode: 0644]
applications/luci-app-commands/po/ca/commands.po
applications/luci-app-commands/po/cs/commands.po
applications/luci-app-commands/po/de/commands.po
applications/luci-app-commands/po/el/commands.po
applications/luci-app-commands/po/en/commands.po
applications/luci-app-commands/po/es/commands.po
applications/luci-app-commands/po/fr/commands.po
applications/luci-app-commands/po/he/commands.po
applications/luci-app-commands/po/hu/commands.po
applications/luci-app-commands/po/it/commands.po
applications/luci-app-commands/po/ja/commands.po
applications/luci-app-commands/po/ms/commands.po
applications/luci-app-commands/po/no/commands.po
applications/luci-app-commands/po/pl/commands.po
applications/luci-app-commands/po/pt-br/commands.po
applications/luci-app-commands/po/pt/commands.po
applications/luci-app-commands/po/ro/commands.po
applications/luci-app-commands/po/ru/commands.po
applications/luci-app-commands/po/sk/commands.po
applications/luci-app-commands/po/sv/commands.po
applications/luci-app-commands/po/templates/commands.pot
applications/luci-app-commands/po/tr/commands.po
applications/luci-app-commands/po/uk/commands.po
applications/luci-app-commands/po/vi/commands.po
applications/luci-app-commands/po/zh-cn/commands.po
applications/luci-app-commands/po/zh-tw/commands.po
applications/luci-app-ddns/Makefile
applications/luci-app-ddns/luasrc/controller/ddns.lua
applications/luci-app-ddns/luasrc/model/cbi/ddns/detail.lua
applications/luci-app-ddns/luasrc/model/cbi/ddns/global.lua
applications/luci-app-ddns/luasrc/model/cbi/ddns/hints.lua
applications/luci-app-ddns/luasrc/model/cbi/ddns/overview.lua
applications/luci-app-ddns/luasrc/tools/ddns.lua
applications/luci-app-ddns/luasrc/view/ddns/detail_lvalue.htm
applications/luci-app-ddns/luasrc/view/ddns/global_value.htm
applications/luci-app-ddns/luasrc/view/ddns/overview_enabled.htm
applications/luci-app-ddns/po/ca/ddns.po
applications/luci-app-ddns/po/cs/ddns.po
applications/luci-app-ddns/po/de/ddns.po
applications/luci-app-ddns/po/el/ddns.po
applications/luci-app-ddns/po/es/ddns.po
applications/luci-app-ddns/po/fr/ddns.po
applications/luci-app-ddns/po/he/ddns.po
applications/luci-app-ddns/po/hu/ddns.po
applications/luci-app-ddns/po/it/ddns.po
applications/luci-app-ddns/po/ja/ddns.po
applications/luci-app-ddns/po/no/ddns.po
applications/luci-app-ddns/po/pl/ddns.po
applications/luci-app-ddns/po/pt-br/ddns.po
applications/luci-app-ddns/po/pt/ddns.po
applications/luci-app-ddns/po/ro/ddns.po
applications/luci-app-ddns/po/ru/ddns.po
applications/luci-app-ddns/po/templates/ddns.pot
applications/luci-app-ddns/po/tr/ddns.po
applications/luci-app-ddns/po/uk/ddns.po
applications/luci-app-ddns/po/vi/ddns.po
applications/luci-app-ddns/po/zh-cn/ddns.po
applications/luci-app-ddns/po/zh-tw/ddns.po
applications/luci-app-ddns/root/etc/uci-defaults/40_luci-ddns
applications/luci-app-diag-devinfo/Makefile
applications/luci-app-dynapoint/Makefile [new file with mode: 0644]
applications/luci-app-dynapoint/luasrc/controller/dynapoint.lua [new file with mode: 0644]
applications/luci-app-dynapoint/luasrc/model/cbi/dynapoint.lua [new file with mode: 0644]
applications/luci-app-dynapoint/luasrc/view/dynapoint/cbi_checkbox.htm [new file with mode: 0644]
applications/luci-app-dynapoint/luasrc/view/dynapoint/cbi_color.htm [new file with mode: 0644]
applications/luci-app-dynapoint/po/de/dynapoint.po [new file with mode: 0644]
applications/luci-app-dynapoint/po/ja/dynapoint.po [new file with mode: 0644]
applications/luci-app-dynapoint/po/templates/dynapoint.pot [new file with mode: 0644]
applications/luci-app-dynapoint/root/etc/uci-defaults/40_luci-dynapoint [new file with mode: 0644]
applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua
applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua
applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua
applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua
applications/luci-app-firewall/po/ca/firewall.po
applications/luci-app-firewall/po/cs/firewall.po
applications/luci-app-firewall/po/de/firewall.po
applications/luci-app-firewall/po/el/firewall.po
applications/luci-app-firewall/po/en/firewall.po
applications/luci-app-firewall/po/es/firewall.po
applications/luci-app-firewall/po/fr/firewall.po
applications/luci-app-firewall/po/he/firewall.po
applications/luci-app-firewall/po/hu/firewall.po
applications/luci-app-firewall/po/it/firewall.po
applications/luci-app-firewall/po/ja/firewall.po
applications/luci-app-firewall/po/ko/firewall.po [new file with mode: 0644]
applications/luci-app-firewall/po/ms/firewall.po
applications/luci-app-firewall/po/no/firewall.po
applications/luci-app-firewall/po/pl/firewall.po
applications/luci-app-firewall/po/pt-br/firewall.po
applications/luci-app-firewall/po/pt/firewall.po
applications/luci-app-firewall/po/ro/firewall.po
applications/luci-app-firewall/po/ru/firewall.po
applications/luci-app-firewall/po/sk/firewall.po
applications/luci-app-firewall/po/sv/firewall.po
applications/luci-app-firewall/po/templates/firewall.pot
applications/luci-app-firewall/po/tr/firewall.po
applications/luci-app-firewall/po/uk/firewall.po
applications/luci-app-firewall/po/vi/firewall.po
applications/luci-app-firewall/po/zh-cn/firewall.po
applications/luci-app-firewall/po/zh-tw/firewall.po
applications/luci-app-fwknopd/luasrc/model/cbi/fwknopd.lua
applications/luci-app-fwknopd/luasrc/view/fwknopd-qr.htm
applications/luci-app-fwknopd/po/en/fwknopd.po
applications/luci-app-fwknopd/po/templates/fwknopd.pot
applications/luci-app-fwknopd/root/etc/uci-defaults/40_luci-fwknopd
applications/luci-app-fwknopd/root/usr/sbin/gen-qr.sh
applications/luci-app-mjpg-streamer/po/ja/mjpg-streamer.po [new file with mode: 0644]
applications/luci-app-olsr/luasrc/controller/olsr.lua
applications/luci-app-olsr/luasrc/view/status-olsr/neighbors.htm
applications/luci-app-p2pblock/Makefile
applications/luci-app-p910nd/po/ja/p910nd.po
applications/luci-app-privoxy/po/zh-cn/privoxy.po
applications/luci-app-qos/po/ja/qos.po
applications/luci-app-rp-pppoe-server/Makefile [new file with mode: 0644]
applications/luci-app-rp-pppoe-server/luasrc/controller/rp-pppoe-server.lua [new file with mode: 0644]
applications/luci-app-rp-pppoe-server/luasrc/model/cbi/rp-pppoe-server.lua [new file with mode: 0644]
applications/luci-app-shairplay/po/ja/shairplay.po [new file with mode: 0644]
applications/luci-app-shairplay/po/templates/shairplay.pot [new file with mode: 0644]
applications/luci-app-splash/Makefile
applications/luci-app-statistics/Makefile
applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua
applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/cpufreq.lua [new file with mode: 0644]
applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/rrdtool.lua
applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/thermal.lua [new file with mode: 0644]
applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/cpufreq.lua [new file with mode: 0644]
applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/df.lua
applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/nut.lua
applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/thermal.lua [new file with mode: 0644]
applications/luci-app-statistics/po/ca/statistics.po
applications/luci-app-statistics/po/cs/statistics.po
applications/luci-app-statistics/po/de/statistics.po
applications/luci-app-statistics/po/el/statistics.po
applications/luci-app-statistics/po/en/statistics.po
applications/luci-app-statistics/po/es/statistics.po
applications/luci-app-statistics/po/fr/statistics.po
applications/luci-app-statistics/po/he/statistics.po
applications/luci-app-statistics/po/hu/statistics.po
applications/luci-app-statistics/po/it/statistics.po
applications/luci-app-statistics/po/ja/statistics.po
applications/luci-app-statistics/po/ms/statistics.po
applications/luci-app-statistics/po/no/statistics.po
applications/luci-app-statistics/po/pl/statistics.po
applications/luci-app-statistics/po/pt-br/statistics.po
applications/luci-app-statistics/po/pt/statistics.po
applications/luci-app-statistics/po/ro/statistics.po
applications/luci-app-statistics/po/ru/statistics.po
applications/luci-app-statistics/po/sk/statistics.po
applications/luci-app-statistics/po/sv/statistics.po
applications/luci-app-statistics/po/templates/statistics.pot
applications/luci-app-statistics/po/tr/statistics.po
applications/luci-app-statistics/po/uk/statistics.po
applications/luci-app-statistics/po/vi/statistics.po
applications/luci-app-statistics/po/zh-cn/statistics.po
applications/luci-app-statistics/po/zh-tw/statistics.po
applications/luci-app-statistics/root/etc/config/luci_statistics
applications/luci-app-statistics/root/usr/bin/stat-genconfig
applications/luci-app-travelmate/Makefile [new file with mode: 0644]
applications/luci-app-travelmate/luasrc/controller/travelmate.lua [new file with mode: 0644]
applications/luci-app-travelmate/luasrc/model/cbi/travelmate.lua [new file with mode: 0644]
applications/luci-app-travelmate/po/ja/travelmate.po [new file with mode: 0644]
applications/luci-app-travelmate/po/templates/travelmate.pot [new file with mode: 0644]
applications/luci-app-travelmate/root/etc/uci-defaults/40_luci-travelmate [new file with mode: 0755]
applications/luci-app-uhttpd/po/ja/uhttpd.po [new file with mode: 0644]
applications/luci-app-uhttpd/po/templates/uhttpd.pot [new file with mode: 0644]
applications/luci-app-unbound/Makefile [new file with mode: 0644]
applications/luci-app-unbound/luasrc/controller/unbound.lua [new file with mode: 0644]
applications/luci-app-unbound/luasrc/model/cbi/unbound.lua [new file with mode: 0644]
applications/luci-app-upnp/po/ja/upnp.po
applications/luci-app-vpnbypass/Makefile [new file with mode: 0644]
applications/luci-app-vpnbypass/luasrc/controller/vpnbypass.lua [new file with mode: 0644]
applications/luci-app-vpnbypass/luasrc/model/cbi/vpnbypass.lua [new file with mode: 0644]
applications/luci-app-vpnbypass/po/templates/vpnbypass.pot [new file with mode: 0644]
applications/luci-app-vpnbypass/root/etc/uci-defaults/40_luci-vpnbypass [new file with mode: 0644]
applications/luci-app-wifischedule/Makefile [new file with mode: 0644]
applications/luci-app-wifischedule/README.md [new file with mode: 0644]
applications/luci-app-wifischedule/luasrc/controller/wifischedule/wifi_schedule.lua [new file with mode: 0644]
applications/luci-app-wifischedule/luasrc/model/cbi/wifischedule/wifi_schedule.lua [new file with mode: 0644]
applications/luci-app-wifischedule/luasrc/view/wifischedule/file_viewer.htm [new file with mode: 0644]
applications/luci-app-wifischedule/po/ja/wifischedule.po [new file with mode: 0644]
applications/luci-app-wifischedule/po/templates/wifischedule.pot [new file with mode: 0644]
applications/luci-app-wifischedule/po/zh-cn/wifischedule.po [new file with mode: 0644]
applications/luci-app-wol/luasrc/controller/wol.lua
applications/luci-app-wol/luasrc/model/cbi/wol.lua
applications/luci-app-wol/po/ca/wol.po
applications/luci-app-wol/po/cs/wol.po
applications/luci-app-wol/po/de/wol.po
applications/luci-app-wol/po/el/wol.po
applications/luci-app-wol/po/en/wol.po
applications/luci-app-wol/po/es/wol.po
applications/luci-app-wol/po/fr/wol.po
applications/luci-app-wol/po/he/wol.po
applications/luci-app-wol/po/hu/wol.po
applications/luci-app-wol/po/it/wol.po
applications/luci-app-wol/po/ja/wol.po
applications/luci-app-wol/po/ms/wol.po
applications/luci-app-wol/po/no/wol.po
applications/luci-app-wol/po/pl/wol.po
applications/luci-app-wol/po/pt-br/wol.po
applications/luci-app-wol/po/pt/wol.po
applications/luci-app-wol/po/ro/wol.po
applications/luci-app-wol/po/ru/wol.po
applications/luci-app-wol/po/sk/wol.po
applications/luci-app-wol/po/sv/wol.po
applications/luci-app-wol/po/templates/wol.pot
applications/luci-app-wol/po/tr/wol.po
applications/luci-app-wol/po/uk/wol.po
applications/luci-app-wol/po/vi/wol.po
applications/luci-app-wol/po/zh-cn/wol.po
applications/luci-app-wol/po/zh-tw/wol.po
applications/luci-app-wshaper/Makefile [deleted file]
applications/luci-app-wshaper/luasrc/controller/wshaper.lua [deleted file]
applications/luci-app-wshaper/luasrc/model/cbi/wshaper.lua [deleted file]
applications/luci-app-wshaper/po/ca/wshaper.po [deleted file]
applications/luci-app-wshaper/po/cs/wshaper.po [deleted file]
applications/luci-app-wshaper/po/de/wshaper.po [deleted file]
applications/luci-app-wshaper/po/el/wshaper.po [deleted file]
applications/luci-app-wshaper/po/en/wshaper.po [deleted file]
applications/luci-app-wshaper/po/es/wshaper.po [deleted file]
applications/luci-app-wshaper/po/fr/wshaper.po [deleted file]
applications/luci-app-wshaper/po/he/wshaper.po [deleted file]
applications/luci-app-wshaper/po/hu/wshaper.po [deleted file]
applications/luci-app-wshaper/po/it/wshaper.po [deleted file]
applications/luci-app-wshaper/po/ja/wshaper.po [deleted file]
applications/luci-app-wshaper/po/ms/wshaper.po [deleted file]
applications/luci-app-wshaper/po/no/wshaper.po [deleted file]
applications/luci-app-wshaper/po/pl/wshaper.po [deleted file]
applications/luci-app-wshaper/po/pt-br/wshaper.po [deleted file]
applications/luci-app-wshaper/po/pt/wshaper.po [deleted file]
applications/luci-app-wshaper/po/ro/wshaper.po [deleted file]
applications/luci-app-wshaper/po/ru/wshaper.po [deleted file]
applications/luci-app-wshaper/po/sk/wshaper.po [deleted file]
applications/luci-app-wshaper/po/sv/wshaper.po [deleted file]
applications/luci-app-wshaper/po/templates/wshaper.pot [deleted file]
applications/luci-app-wshaper/po/tr/wshaper.po [deleted file]
applications/luci-app-wshaper/po/uk/wshaper.po [deleted file]
applications/luci-app-wshaper/po/vi/wshaper.po [deleted file]
applications/luci-app-wshaper/po/zh-cn/wshaper.po [deleted file]
applications/luci-app-wshaper/po/zh-tw/wshaper.po [deleted file]
applications/luci-app-wshaper/root/etc/uci-defaults/40_wshaper [deleted file]
collections/luci-ssl-openssl/Makefile [new file with mode: 0644]
collections/luci-ssl/Makefile
contrib/package/community-profiles/files/etc/config/profile_berlin
contrib/package/freifunk-common/Makefile
contrib/package/freifunk-common/files/usr/bin/neigh.sh
contrib/package/freifunk-p2pblock/Makefile
contrib/package/meshwizard/Makefile
contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/gen_auto-ipv6-dhcpv6-ip.sh
contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_lan_ipv6.sh
contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_network.sh
contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_olsrd.sh
contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_olsrd_interface.sh
contrib/package/meshwizard/files/usr/bin/meshwizard/wizard.sh
documentation/i18n.md
luci.mk
modules/luci-base/Makefile
modules/luci-base/htdocs/luci-static/resources/cbi.js
modules/luci-base/luasrc/cbi/datatypes.lua
modules/luci-base/luasrc/model/network.lua
modules/luci-base/luasrc/sys/iptparser.lua
modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua
modules/luci-base/luasrc/sys/zoneinfo/tzoffset.lua
modules/luci-base/luasrc/tools/status.lua
modules/luci-base/luasrc/tools/webadmin.lua
modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm
modules/luci-base/luasrc/view/cbi/fvalue.htm
modules/luci-base/luasrc/view/cbi/lvalue.htm
modules/luci-base/luasrc/view/cbi/mvalue.htm
modules/luci-base/luasrc/view/cbi/network_ifacelist.htm
modules/luci-base/luasrc/view/cbi/network_netlist.htm
modules/luci-base/po/ca/base.po
modules/luci-base/po/cs/base.po
modules/luci-base/po/de/base.po
modules/luci-base/po/el/base.po
modules/luci-base/po/en/base.po
modules/luci-base/po/es/base.po
modules/luci-base/po/fr/base.po
modules/luci-base/po/he/base.po
modules/luci-base/po/hu/base.po
modules/luci-base/po/it/base.po
modules/luci-base/po/ja/base.po
modules/luci-base/po/ko/base.po [new file with mode: 0644]
modules/luci-base/po/ms/base.po
modules/luci-base/po/no/base.po
modules/luci-base/po/pl/base.po
modules/luci-base/po/pt-br/base.po
modules/luci-base/po/pt/base.po
modules/luci-base/po/ro/base.po
modules/luci-base/po/ru/base.po
modules/luci-base/po/sk/base.po
modules/luci-base/po/sv/base.po
modules/luci-base/po/templates/base.pot
modules/luci-base/po/tr/base.po
modules/luci-base/po/uk/base.po
modules/luci-base/po/vi/base.po
modules/luci-base/po/zh-cn/base.po
modules/luci-base/po/zh-tw/base.po
modules/luci-base/root/etc/config/luci
modules/luci-mod-admin-full/luasrc/controller/admin/network.lua
modules/luci-mod-admin-full/luasrc/controller/admin/status.lua
modules/luci-mod-admin-full/luasrc/controller/admin/system.lua
modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua
modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/routes.lua
modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua
modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi_add.lua
modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/admin.lua
modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/fstab/mount.lua
modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/leds.lua
modules/luci-mod-admin-full/luasrc/view/admin_network/iface_overview.htm
modules/luci-mod-admin-full/luasrc/view/admin_network/iface_status.htm
modules/luci-mod-admin-full/luasrc/view/admin_network/lease_status.htm
modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm
modules/luci-mod-admin-full/luasrc/view/admin_system/flashops.htm
modules/luci-mod-admin-full/root/etc/uci-defaults/50_luci-mod-admin-full [new file with mode: 0755]
modules/luci-mod-admin-mini/luasrc/view/mini/index.htm
modules/luci-mod-admin-mini/luasrc/view/mini/upgrade.htm
modules/luci-mod-failsafe/luasrc/view/failsafe/flashops.htm
modules/luci-mod-freifunk/luasrc/view/freifunk/remote_update.htm
protocols/luci-proto-ipip/Makefile [new file with mode: 0644]
protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua [new file with mode: 0644]
protocols/luci-proto-ipip/luasrc/model/network/proto_ipip.lua [new file with mode: 0644]
protocols/luci-proto-qmi/Makefile [new file with mode: 0644]
protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua [new file with mode: 0644]
protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua [new file with mode: 0644]
protocols/luci-proto-wireguard/Makefile [new file with mode: 0644]
protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua [new file with mode: 0644]
protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua [new file with mode: 0644]
themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/cascade.css
themes/luci-theme-material/luasrc/view/themes/material/footer.htm

index 2cee302..0a4a4cd 100644 (file)
@@ -1,4 +1,4 @@
--- Copyright 2016 Openwrt.org
+-- Copyright 2016 Hannu Nyman
 -- Licensed to the public under the Apache License 2.0.
 
 m = Map("adblock", translate("Adblock"),
@@ -17,20 +17,6 @@ o3 = s:option(Value, "adb_whitelist", translate("Whitelist file"),
 o3.rmempty = false
 o3.datatype = "file"
 
-fdns = s:option(Flag, "adb_forcedns", translate("Redirect all DNS queries to the local resolver"),
-        translate("When adblock is active, all DNS queries are redirected to the local resolver " ..
-        "in this server by default. You can disable that to allow queries to external DNS servers."))
-fdns.rmempty = false
-fdns.default = fdns.enabled
-
--- Statistics
-
-t = m:section(NamedSection, "global", "adblock", translate("Statistics"))
-
-dat = t:option(DummyValue, "adb_lastrun", translate("Last update of the blocklists"))
-tot = t:option(DummyValue, "adb_overall_count", translate("Total count of blocked domains"))
-prc = t:option(DummyValue, "adb_percentage", translate("Percentage of blocked packets (before last update, IPv4/IPv6)"))
-
 -- Blocklist options
 
 bl = m:section(TypedSection, "source", translate("Blocklist sources"),
@@ -45,18 +31,16 @@ name = bl:option(Flag, "enabled", translate("Enabled"))
 name.rmempty  = false
 
 des = bl:option(DummyValue, "adb_src_desc", translate("Description"))
-cou = bl:option(DummyValue, "adb_src_count", translate("Count"))
-upd = bl:option(DummyValue, "adb_src_timestamp", translate("List date/state"))
 
 -- Additional options
 
-s2 = m:section(NamedSection, "backup", "service", translate("Backup options"))
+s2 = m:section(NamedSection, "global", "adblock", translate("Backup options"))
 
-o4 = s2:option(Flag, "enabled", translate("Enable blocklist backup"))
+o4 = s2:option(Flag, "adb_backup", translate("Enable blocklist backup"))
 o4.rmempty = false
 o4.default = 0
 
-o5 = s2:option(Value, "adb_dir", translate("Backup directory"))
+o5 = s2:option(Value, "adb_backupdir", translate("Backup directory"))
 o5.rmempty = false
 o5.datatype = "directory"
 
@@ -65,39 +49,15 @@ o5.datatype = "directory"
 e = m:section(NamedSection, "global", "adblock", translate("Extra options"),
        translate("Options for further tweaking in case the defaults are not suitable for you."))
 
-a0 = e:option(Flag, "adb_restricted", translate("Do not write status info to flash"),
-       translate("Skip writing update status information to the config file. Status fields on this page will not be updated."))
-a0.default = 0
-
-a1 = e:option(Value, "adb_nullport", translate("Port of the adblock uhttpd instance"))
-a1.optional = true
-a1.default = 65534
-a1.datatype = "port"
-
-a5 = e:option(Value, "adb_nullportssl", translate("Port of the adblock uhttpd instance for https links"))
-a5.optional = true
-a5.default = 65535
-a5.datatype = "port"
-
-a2 = e:option(Value, "adb_nullipv4", translate("IPv4 blackhole ip address"))
-a2.optional = true
-a2.default = "198.18.0.1"
-a2.datatype = "ip4addr"
-
-a3 = e:option(Value, "adb_nullipv6", translate("IPv6 blackhole ip address"))
-a3.optional = true
-a3.default = "::ffff:c612:0001"
-a3.datatype = "ip6addr"
-
-a4 = e:option(Value, "adb_fetchttl", translate("Timeout for blocklist fetch (seconds)"))
-a4.optional = true
-a4.default = 5
-a4.datatype = "range(2,60)"
-
-a7 = e:option(Value, "adb_lanif", translate("Name of the logical lan interface"))
-a7.optional = true
-a7.default = "lan"
-a7.datatype = "network"
+a = e:option(Flag, "adb_debug", translate("Enable verbose debug logging"))
+a.default = a.disabled
+a.rmempty = false
+
+a = e:option(Value, "adb_iface", translate("Restrict reload trigger to certain interface(s)"),
+       translate("Space separated list of wan interfaces that trigger reload action. " ..
+               "To disable reload trigger set it to 'false'. Default: empty"))
+a.datatype = "network"
+a.rmempty = true
 
 return m
 
diff --git a/applications/luci-app-adblock/po/ja/adblock.po b/applications/luci-app-adblock/po/ja/adblock.po
new file mode 100644 (file)
index 0000000..a3c982f
--- /dev/null
@@ -0,0 +1,139 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.11\n"
+"Language: ja\n"
+
+msgid ""
+"). Note that list URLs and Shallalist category selections are not "
+"configurable via Luci."
+msgstr ""
+")。これらのリストのURLおよびshallaリストのカテゴリー選択は、Luciによって設定"
+"できないことに注意します。"
+
+msgid "Adblock"
+msgstr "Adblock"
+
+msgid "Available blocklist sources ("
+msgstr "利用可能なブロックリスト提供元です("
+
+msgid "Backup directory"
+msgstr "バックアップ ディレクトリ"
+
+msgid "Backup options"
+msgstr "バックアップ オプション"
+
+msgid "Blocklist sources"
+msgstr "ブロックリスト提供元"
+
+msgid ""
+"Configuration of the adblock package to block ad/abuse domains by using DNS."
+msgstr ""
+"広告/不正ドメインをDNSを利用してブロックする、adblock パッケージの設定です。"
+
+msgid "Description"
+msgstr "説明"
+
+msgid "Enable adblock"
+msgstr "adblockの有効化"
+
+msgid "Enable blocklist backup"
+msgstr "ブロックリスト バックアップの有効化"
+
+msgid "Enable verbose debug logging"
+msgstr "詳細なデバッグ ログの有効化"
+
+msgid "Enabled"
+msgstr "有効"
+
+msgid "Extra options"
+msgstr "拡張設定"
+
+msgid ""
+"File with whitelisted hosts/domains that are allowed despite being on a "
+"blocklist."
+msgstr ""
+"ファイルのホワイトリスト ホスト/ドメインは、ブロックリストに登録されていても"
+"許可されます。"
+
+msgid "Global options"
+msgstr "一般設定"
+
+msgid ""
+"Options for further tweaking in case the defaults are not suitable for you."
+msgstr "デフォルト設定が適切でない場合、追加で設定するためのオプションです。"
+
+msgid "Restrict reload trigger to certain interface(s)"
+msgstr "リロードトリガを特定のインターフェースに限定する"
+
+msgid ""
+"Space separated list of wan interfaces that trigger reload action. To "
+"disable reload trigger set it to 'false'. Default: empty"
+msgstr ""
+"リロード実行のトリガとなる、スペースで区切られたWANインターフェースのリストで"
+"す。リロードトリガを無効にするには、 false を設定します。デフォルト:(空)"
+
+msgid "Whitelist file"
+msgstr "ホワイトリスト ファイル"
+
+msgid "see list details"
+msgstr "リストの詳細を見る"
+
+#~ msgid "Count"
+#~ msgstr "カウント"
+
+#~ msgid "Do not write status info to flash"
+#~ msgstr "ステータス情報をフラッシュに書き込まない"
+
+#~ msgid "Last update of the blocklists"
+#~ msgstr "ブロックリストの最終更新日時"
+
+#~ msgid "List date/state"
+#~ msgstr "リスト日時/状態"
+
+#~ msgid "Name of the logical lan interface"
+#~ msgstr "論理LANインターフェース名"
+
+#~ msgid "Percentage of blocked packets (before last update, IPv4/IPv6)"
+#~ msgstr "ブロック済みパケットの割合(最終更新以前、IPv4/IPv6)"
+
+#~ msgid "Port of the adblock uhttpd instance"
+#~ msgstr "adblock uhttpdインスタンスのポート"
+
+#~ msgid "Port of the adblock uhttpd instance for https links"
+#~ msgstr "httpsリンク用adblock uhttpdインスタンスのポート"
+
+#~ msgid "Redirect all DNS queries to the local resolver"
+#~ msgstr "全てのDNSクエリをローカルリゾルバにリダイレクト"
+
+#~ msgid ""
+#~ "Skip writing update status information to the config file. Status fields "
+#~ "on this page will not be updated."
+#~ msgstr ""
+#~ "更新ステータス情報をコンフィグファイルに書き込まず、スキップします。この"
+#~ "ページのステータス画面は更新されなくなります。"
+
+#~ msgid "Statistics"
+#~ msgstr "ステータス"
+
+#~ msgid "Timeout for blocklist fetch (seconds)"
+#~ msgstr "ブロックリスト取得の制限時間(秒)"
+
+#~ msgid "Total count of blocked domains"
+#~ msgstr "ブロック済みドメインの合計"
+
+#~ msgid ""
+#~ "When adblock is active, all DNS queries are redirected to the local "
+#~ "resolver in this server by default. You can disable that to allow queries "
+#~ "to external DNS servers."
+#~ msgstr ""
+#~ "adblockがアクティブである時、全てのDNSクエリは既定でこのサーバー上のリゾル"
+#~ "バにリダイレクトされます。外部DNSサーバーへのクエリを許可する場合、この設"
+#~ "定を無効にすることもできます。"
index 9c0ca21..22a30e9 100644 (file)
@@ -27,21 +27,18 @@ msgstr ""
 "Konfiguration av paket adblock för att blockera annons/otillåtna domäner "
 "genom att användning DNS."
 
-msgid "Count"
-msgstr "Räkna"
-
 msgid "Description"
 msgstr "Beskrivning"
 
-msgid "Do not write status info to flash"
-msgstr "Skriv inte status info till flash"
-
 msgid "Enable adblock"
 msgstr "Aktivera abblock"
 
 msgid "Enable blocklist backup"
 msgstr "Aktivera säkerhetskopiering av blockeringslistan"
 
+msgid "Enable verbose debug logging"
+msgstr ""
+
 msgid "Enabled"
 msgstr "Aktiverad"
 
@@ -56,55 +53,16 @@ msgstr ""
 msgid "Global options"
 msgstr "Globala alternativ"
 
-msgid "IPv4 blackhole ip address"
-msgstr ""
-
-msgid "IPv6 blackhole ip address"
-msgstr ""
-
-msgid "Last update of the blocklists"
-msgstr ""
-
-msgid "List date/state"
-msgstr ""
-
-msgid "Name of the logical lan interface"
-msgstr ""
-
 msgid ""
 "Options for further tweaking in case the defaults are not suitable for you."
 msgstr ""
 
-msgid "Percentage of blocked packets (before last update, IPv4/IPv6)"
-msgstr ""
-
-msgid "Port of the adblock uhttpd instance"
+msgid "Restrict reload trigger to certain interface(s)"
 msgstr ""
 
-msgid "Port of the adblock uhttpd instance for https links"
-msgstr ""
-
-msgid "Redirect all DNS queries to the local resolver"
-msgstr "Dirigera om alla DNS-förfrågning till den lokala resolvern"
-
 msgid ""
-"Skip writing update status information to the config file. Status fields on "
-"this page will not be updated."
-msgstr ""
-
-msgid "Statistics"
-msgstr ""
-
-msgid "Timeout for blocklist fetch (seconds)"
-msgstr ""
-
-msgid "Total count of blocked domains"
-msgstr ""
-
-msgid ""
-"When adblock is active, all DNS queries are redirected to the local resolver "
-"in this server by default. You can disable that to allow queries to external "
-"DNS servers."
+"Space separated list of wan interfaces that trigger reload action. To "
+"disable reload trigger set it to 'false'. Default: empty"
 msgstr ""
 
 msgid "Whitelist file"
@@ -112,3 +70,12 @@ msgstr "Vitlista fil"
 
 msgid "see list details"
 msgstr "se listans detaljer"
+
+#~ msgid "Count"
+#~ msgstr "Räkna"
+
+#~ msgid "Do not write status info to flash"
+#~ msgstr "Skriv inte status info till flash"
+
+#~ msgid "Redirect all DNS queries to the local resolver"
+#~ msgstr "Dirigera om alla DNS-förfrågning till den lokala resolvern"
index eeb0d97..6b2dbd1 100644 (file)
@@ -25,21 +25,18 @@ msgid ""
 "Configuration of the adblock package to block ad/abuse domains by using DNS."
 msgstr ""
 
-msgid "Count"
-msgstr ""
-
 msgid "Description"
 msgstr ""
 
-msgid "Do not write status info to flash"
-msgstr ""
-
 msgid "Enable adblock"
 msgstr ""
 
 msgid "Enable blocklist backup"
 msgstr ""
 
+msgid "Enable verbose debug logging"
+msgstr ""
+
 msgid "Enabled"
 msgstr ""
 
@@ -54,55 +51,16 @@ msgstr ""
 msgid "Global options"
 msgstr ""
 
-msgid "IPv4 blackhole ip address"
-msgstr ""
-
-msgid "IPv6 blackhole ip address"
-msgstr ""
-
-msgid "Last update of the blocklists"
-msgstr ""
-
-msgid "List date/state"
-msgstr ""
-
-msgid "Name of the logical lan interface"
-msgstr ""
-
 msgid ""
 "Options for further tweaking in case the defaults are not suitable for you."
 msgstr ""
 
-msgid "Percentage of blocked packets (before last update, IPv4/IPv6)"
-msgstr ""
-
-msgid "Port of the adblock uhttpd instance"
-msgstr ""
-
-msgid "Port of the adblock uhttpd instance for https links"
-msgstr ""
-
-msgid "Redirect all DNS queries to the local resolver"
-msgstr ""
-
-msgid ""
-"Skip writing update status information to the config file. Status fields on "
-"this page will not be updated."
-msgstr ""
-
-msgid "Statistics"
-msgstr ""
-
-msgid "Timeout for blocklist fetch (seconds)"
-msgstr ""
-
-msgid "Total count of blocked domains"
+msgid "Restrict reload trigger to certain interface(s)"
 msgstr ""
 
 msgid ""
-"When adblock is active, all DNS queries are redirected to the local resolver "
-"in this server by default. You can disable that to allow queries to external "
-"DNS servers."
+"Space separated list of wan interfaces that trigger reload action. To "
+"disable reload trigger set it to 'false'. Default: empty"
 msgstr ""
 
 msgid "Whitelist file"
index e57921d..2878d8a 100644 (file)
@@ -36,21 +36,18 @@ msgid ""
 "Configuration of the adblock package to block ad/abuse domains by using DNS."
 msgstr "Adblock 配置工具,通过 DNS 来拦截广告和阻止域名。"
 
-msgid "Count"
-msgstr "数量"
-
 msgid "Description"
 msgstr "描述"
 
-msgid "Do not write status info to flash"
-msgstr ""
-
 msgid "Enable adblock"
 msgstr "启用Adblock"
 
 msgid "Enable blocklist backup"
 msgstr "启用拦截规则备份"
 
+msgid "Enable verbose debug logging"
+msgstr ""
+
 msgid "Enabled"
 msgstr "启用"
 
@@ -65,61 +62,55 @@ msgstr "允许的主机/域名列表"
 msgid "Global options"
 msgstr "全局选项"
 
-msgid "IPv4 blackhole ip address"
-msgstr "IPv4禁止列表"
-
-msgid "IPv6 blackhole ip address"
-msgstr "IPv6禁止列表"
-
-msgid "Last update of the blocklists"
-msgstr ""
-
-msgid "List date/state"
-msgstr "列表日期/状态"
-
-msgid "Name of the logical lan interface"
-msgstr "LAN接口名称"
-
 msgid ""
 "Options for further tweaking in case the defaults are not suitable for you."
 msgstr "在默认设置并不适合你时的额外选项。"
 
-msgid "Percentage of blocked packets (before last update, IPv4/IPv6)"
+msgid "Restrict reload trigger to certain interface(s)"
 msgstr ""
 
-msgid "Port of the adblock uhttpd instance"
-msgstr "Adblock uhttpd端口"
-
-msgid "Port of the adblock uhttpd instance for https links"
+msgid ""
+"Space separated list of wan interfaces that trigger reload action. To "
+"disable reload trigger set it to 'false'. Default: empty"
 msgstr ""
 
-msgid "Redirect all DNS queries to the local resolver"
-msgstr "将所有DNS查询都重定向到本地解析器"
+msgid "Whitelist file"
+msgstr "白名单文件"
+
+msgid "see list details"
+msgstr "查看列表详情"
 
-msgid ""
-"Skip writing update status information to the config file. Status fields on "
-"this page will not be updated."
-msgstr ""
+#~ msgid "Count"
+#~ msgstr "数量"
 
-msgid "Statistics"
-msgstr ""
+#~ msgid "IPv4 blackhole ip address"
+#~ msgstr "IPv4禁止列表"
 
-msgid "Timeout for blocklist fetch (seconds)"
-msgstr "列表查询超时时间(秒)"
+#~ msgid "IPv6 blackhole ip address"
+#~ msgstr "IPv6禁止列表"
 
-msgid "Total count of blocked domains"
-msgstr "阻止域名总数"
+#~ msgid "List date/state"
+#~ msgstr "列表日期/状态"
 
-msgid ""
-"When adblock is active, all DNS queries are redirected to the local resolver "
-"in this server by default. You can disable that to allow queries to external "
-"DNS servers."
-msgstr ""
-"当Adblock处于活动状态时,默认情况下会将所有的DNS查询重定向到此服务器的本地解"
-"析器。您可以禁用以允许查询外部DNS服务器。"
+#~ msgid "Name of the logical lan interface"
+#~ msgstr "LAN接口名称"
 
-msgid "Whitelist file"
-msgstr "白名单文件"
+#~ msgid "Port of the adblock uhttpd instance"
+#~ msgstr "Adblock uhttpd端口"
 
-msgid "see list details"
-msgstr "查看列表详情"
+#~ msgid "Redirect all DNS queries to the local resolver"
+#~ msgstr "将所有DNS查询都重定向到本地解析器"
+
+#~ msgid "Timeout for blocklist fetch (seconds)"
+#~ msgstr "列表查询超时时间(秒)"
+
+#~ msgid "Total count of blocked domains"
+#~ msgstr "阻止域名总数"
+
+#~ msgid ""
+#~ "When adblock is active, all DNS queries are redirected to the local "
+#~ "resolver in this server by default. You can disable that to allow queries "
+#~ "to external DNS servers."
+#~ msgstr ""
+#~ "当Adblock处于活动状态时,默认情况下会将所有的DNS查询重定向到此服务器的本地"
+#~ "解析器。您可以禁用以允许查询外部DNS服务器。"
index 0179f04..f5b006c 100644 (file)
@@ -6,8 +6,32 @@
 
 include $(TOPDIR)/rules.mk
 
+PKG_NAME:=luci-app-aria2
+
+# Version == major.minor.patch
+# increase "minor" on new functionality and "patch" on patches/optimization
+PKG_VERSION:=1.0.1
+
+# Release == build
+# increase on changes of translation files
+PKG_RELEASE:=2
+
+PKG_LICENSE:=Apache-2.0
+PKG_MAINTAINER:=Hsing-Wang Liao <kuoruan@gmail.com>
+
+# LuCI specific settings
 LUCI_TITLE:=LuCI Support for Aria2
 LUCI_DEPENDS:=+aria2
+LUCI_PKGARCH:=all
+
+define Package/$(PKG_NAME)/config
+# shown in make menuconfig <Help>
+help
+               $(LUCI_TITLE)
+               .
+               Version: $(PKG_VERSION)-$(PKG_RELEASE)
+               $(PKG_MAINTAINER)
+endef
 
 include ../../luci.mk
 
index 780aea3..3b61f95 100644 (file)
@@ -44,7 +44,7 @@ end
 
 m = Map("aria2", translate("Aria2"), translate("Aria2 is a multi-protocol &amp; multi-source download utility, here you can configure the settings."))
 
-m:section(SimpleSection).template  = "aria2/web_script"
+m:section(SimpleSection).template  = "aria2/overview_status"
 
 s = m:section(TypedSection, "aria2", translate("Aria2 Settings"))
 s.addremove = false
@@ -80,19 +80,32 @@ o.rmempty = false
 o = s:taboption("general", Value, "rpc_passwd", translate("RPC password"))
 o:depends("rpc_auth_method", "user_pass")
 o.password  =  true
-o.rmempty = false
+o.rmempty = true
 
 o = s:taboption("general", Value, "rpc_secret", translate("RPC Token"), "<br/>" .. cfgbtn)
 o:depends("rpc_auth_method", "token")
-o.rmempty = false
+o.rmempty = true
 
 o = s:taboption("file", Value, "config_dir", translate("Config file directory"))
 o.placeholder = "/var/etc/aria2"
 
+o = s:taboption("file", Flag, "enable_log", translate("Enable log"), translate("Log file is in the config file dir."))
+o.enabled = "true"
+o.disabled = "false"
+o = s:taboption("file", ListValue, "log_level", translate("Log level"))
+o:depends("enable_log", "true")
+o:value("debug", translate("Debug"))
+o:value("info", translate("Info"))
+o:value("notice", translate("Notice"))
+o:value("warn", translate("Warn"))
+o:value("error", translate("Error"))
+
 o = s:taboption("file", Value, "dir", translate("Default download directory"))
 o.rmempty = false
 
-s:taboption("file", Value, "disk_cache", translate("Disk cache"), translate("in bytes, You can append K or M."))
+o = s:taboption("file", Value, "disk_cache", translate("Disk cache"), translate("in bytes, You can append K or M."))
+o.rmempty = true
 
 o = s:taboption("file", ListValue, "file_allocation", translate("Preallocation"), translate("\"Falloc\" is not available in all cases."))
 o:value("none", translate("Off"))
@@ -101,6 +114,7 @@ o:value("trunc", translate("Trunc"))
 o:value("falloc", translate("Falloc"))
 
 overall_speed_limit = s:taboption("task", Flag, "overall_speed_limit", translate("Overall speed limit enabled"))
+overall_speed_limit.rmempty = true
 
 o = s:taboption("task", Value, "max_overall_download_limit", translate("Overall download limit"), translate("in bytes/sec, You can append K or M."))
 o:depends("overall_speed_limit", "1")
@@ -109,6 +123,7 @@ o = s:taboption("task", Value, "max_overall_upload_limit", translate("Overall up
 o:depends("overall_speed_limit", "1")
 
 task_speed_limit = s:taboption("task", Flag, "task_speed_limit", translate("Per task speed limit enabled"))
+task_speed_limit.rmempty = true
 
 o = s:taboption("task", Value, "max_download_limit", translate("Per task download limit"), translate("in bytes/sec, You can append K or M."))
 o:depends("task_speed_limit", "1")
diff --git a/applications/luci-app-aria2/luasrc/view/aria2/overview_status.htm b/applications/luci-app-aria2/luasrc/view/aria2/overview_status.htm
new file mode 100644 (file)
index 0000000..b14cca2
--- /dev/null
@@ -0,0 +1,77 @@
+<script type="text/javascript">//<![CDATA[
+XHR.poll(5, '<%=luci.dispatcher.build_url("admin/services/aria2/status")%>', null,
+       function(x, data) {
+               var tb = document.getElementById('aria2_status');
+               if (data && tb) {
+                       if (data.running) {
+                               var links = '<em><%:The Aria2 service is running.%></em>';
+                               if (data.yaaw) {
+                                       links += '<input class="cbi-button mar-10" type="button" value="<%:Open YAAW%>" onclick="openWebUI(\'yaaw\');" />';
+                               }
+                               if (data.webui) {
+                                       links += '<input class="cbi-button mar-10" type="button" value="<%:Open WebUI-Aria2%>" onclick="openWebUI(\'webui-aria2\');" />';
+                               }
+                               tb.innerHTML = links;
+                       } else {
+                               tb.innerHTML = '<em><%:The Aria2 service is not running.%></em>';
+                       }
+               }
+       }
+);
+
+function randomString(len) {
+       len = len || 32;
+       var $chars = 'abcdefghijklmnopqrstuvwxyz1234567890';
+       var maxPos = $chars.length;
+       var pwd = '';
+       for (i = 0; i < len; i++) {
+               pwd += $chars.charAt(Math.floor(Math.random() * maxPos));
+       }
+       return pwd;
+};
+
+function randomSecret() {
+       var Token = document.getElementById("cbid.aria2.main.rpc_secret");
+       Token.value = randomString(32);
+};
+
+function showRPCURL() {
+       var websocket = document.getElementById("use_websocket");
+       var protocol = (websocket.checked) ? "ws" : "http";
+       var newTextNode = document.getElementById("aria2rpcpath");
+       var auth_method = document.getElementById("cbid.aria2.main.rpc_auth_method");
+       var auth_port = document.getElementById("cbid.aria2.main.rpc_listen_port");
+       if (auth_port.value == "") {
+               auth_port_value = "6800"
+       } else {
+               auth_port_value = auth_port.value
+       };
+       if (auth_method.value == "token") {
+               var auth_token = document.getElementById("cbid.aria2.main.rpc_secret");
+               newTextNode.value = protocol + "://token:" + auth_token.value + "@" + document.domain + ":" + auth_port_value + "/jsonrpc";
+       } else if (auth_method.value == "user_pass") {
+               var auth_user = document.getElementById("cbid.aria2.main.rpc_user");
+               var auth_passwd = document.getElementById("cbid.aria2.main.rpc_passwd");
+               newTextNode.value = protocol + "://" + auth_user.value + ":" + auth_passwd.value + "@" + document.domain + ":" + auth_port_value + "/jsonrpc";
+       } else {
+               newTextNode.value = protocol + "://" + document.domain + ":" + auth_port_value + "/jsonrpc";
+       }
+};
+
+function openWebUI(path) {
+       var curWwwPath = window.document.location.href;
+       var pathName = window.document.location.pathname;
+       var pos = curWwwPath.indexOf(pathName);
+       var localhostPath = curWwwPath.substring(0, pos);
+       var url = "http:" + localhostPath.substring(window.location.protocol.length) + "/" + path;
+       window.open(url)
+};
+//]]>
+</script>
+<style>.mar-10 {margin-left: 10px; margin-right: 10px;}</style>
+<fieldset class="cbi-section">
+       <legend><%:Aria2 Status%></legend>
+       <p id="aria2_status">
+               <em><%:Collecting data...%></em>
+       </p>
+</fieldset>
diff --git a/applications/luci-app-aria2/luasrc/view/aria2/web_script.htm b/applications/luci-app-aria2/luasrc/view/aria2/web_script.htm
deleted file mode 100644 (file)
index 933c6af..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-<script type="text/javascript">//<![CDATA[
-XHR.poll(5, '<%=url([[admin]], [[services]], [[aria2]], [[status]])%>', null,
-       function(x, data) {
-               var tb = document.getElementById('aria2_status');
-               if (data && tb) {
-                       if (data.running) {
-                               var links = '<em><%:The Aria2 service is running.%></em>';
-                               if (data.yaaw) {
-                                       links += '<input class="cbi-button mar-10" type="button" value="<%:Open YAAW%>" onclick="openWebUI(\'yaaw\');" />';
-                               }
-                               if (data.webui) {
-                                       links += '<input class="cbi-button mar-10" type="button" value="<%:Open WebUI-Aria2%>" onclick="openWebUI(\'webui-aria2\');" />';
-                               }
-                               tb.innerHTML = links;
-                       } else {
-                               tb.innerHTML = '<em><%:The Aria2 service is not running.%></em>';
-                       }
-               }
-       }
-);
-
-function randomString(len) {
-       len = len || 32;
-       var $chars = 'abcdefghijklmnopqrstuvwxyz1234567890';
-       var maxPos = $chars.length;
-       var pwd = '';
-       for (i = 0; i < len; i++) {
-               pwd += $chars.charAt(Math.floor(Math.random() * maxPos));
-       }
-       return pwd;
-};
-
-function randomSecret() {
-       var Token = document.getElementById("cbid.aria2.main.rpc_secret");
-       Token.value = randomString(32);
-};
-
-function showRPCURL() {
-       var websocket = document.getElementById("use_websocket");
-       var protocol = (websocket.checked) ? "ws" : "http";
-       var newTextNode = document.getElementById("aria2rpcpath");
-       var auth_method = document.getElementById("cbid.aria2.main.rpc_auth_method");
-       var auth_port = document.getElementById("cbid.aria2.main.rpc_listen_port");
-       if (auth_port.value == "") {
-               auth_port_value = "6800"
-       } else {
-               auth_port_value = auth_port.value
-       };
-       if (auth_method.value == "token") {
-               var auth_token = document.getElementById("cbid.aria2.main.rpc_secret");
-               newTextNode.value = protocol + "://token:" + auth_token.value + "@" + document.domain + ":" + auth_port_value + "/jsonrpc";
-       } else if (auth_method.value == "user_pass") {
-               var auth_user = document.getElementById("cbid.aria2.main.rpc_user");
-               var auth_passwd = document.getElementById("cbid.aria2.main.rpc_passwd");
-               newTextNode.value = protocol + "://" + auth_user.value + ":" + auth_passwd.value + "@" + document.domain + ":" + auth_port_value + "/jsonrpc";
-       } else {
-               newTextNode.value = protocol + "://" + document.domain + ":" + auth_port_value + "/jsonrpc";
-       }
-};
-
-function openWebUI(path) {
-       var curWwwPath = window.document.location.href;
-       var pathName = window.document.location.pathname;
-       var pos = curWwwPath.indexOf(pathName);
-       var localhostPath = curWwwPath.substring(0, pos);
-       var url = "http:" + localhostPath.substring(window.location.protocol.length) + "/" + path;
-       window.open(url)
-};
-//]]>
-</script>
-<style>.mar-10 {margin-left: 10px; margin-right: 10px;}</style>
-<fieldset class="cbi-section">
-       <legend><%:Aria2 Status%></legend>
-       <p id="aria2_status">
-               <em><%:Collecting data...%></em>
-       </p>
-</fieldset>
diff --git a/applications/luci-app-aria2/po/templates/aria2.po b/applications/luci-app-aria2/po/templates/aria2.po
deleted file mode 100644 (file)
index 353d48e..0000000
+++ /dev/null
@@ -1,176 +0,0 @@
-msgid "Aria2"
-msgstr ""
-
-msgid "Aria2 is a multi-protocol &amp; multi-source download utility, here you can configure the settings."
-msgstr ""
-
-msgid "Aria2 Status"
-msgstr ""
-
-msgid "Open YAAW"
-msgstr ""
-
-msgid "Open WebUI-Aria2"
-msgstr ""
-
-msgid "The Aria2 service is running."
-msgstr ""
-
-msgid "The Aria2 service is not running."
-msgstr ""
-
-msgid "Aria2 Settings"
-msgstr ""
-
-msgid "General settings"
-msgstr ""
-
-msgid "Files and Locations"
-msgstr ""
-
-msgid "Enabled"
-msgstr ""
-
-msgid "Task Settings"
-msgstr ""
-
-msgid "BitTorrent Settings"
-msgstr ""
-
-msgid "Run daemon as user"
-msgstr ""
-
-msgid "RPC port"
-msgstr ""
-
-msgid "RPC authentication method"
-msgstr ""
-
-msgid "No Authentication"
-msgstr ""
-
-msgid "Username & Password"
-msgstr ""
-
-msgid "Token"
-msgstr ""
-
-msgid "RPC username"
-msgstr ""
-
-msgid "RPC password"
-msgstr ""
-
-msgid "RPC Token"
-msgstr ""
-
-msgid "Generate Randomly"
-msgstr ""
-
-msgid "Config file directory"
-msgstr ""
-
-msgid "Default download directory"
-msgstr ""
-
-msgid "Disk cache"
-msgstr ""
-
-msgid "in bytes, You can append K or M."
-msgstr ""
-
-msgid "Preallocation"
-msgstr ""
-
-msgid "Off"
-msgstr ""
-
-msgid "Prealloc"
-msgstr ""
-
-msgid "Trunc"
-msgstr ""
-
-msgid "Falloc"
-msgstr ""
-
-msgid "\"Falloc\" is not available in all cases."
-msgstr ""
-
-msgid "Overall speed limit enabled"
-msgstr ""
-
-msgid "Overall download limit"
-msgstr ""
-
-msgid "in bytes/sec, You can append K or M."
-msgstr ""
-
-msgid "Overall upload limit"
-msgstr ""
-
-msgid "Per task speed limit enabled"
-msgstr ""
-
-msgid "Per task download limit"
-msgstr ""
-
-msgid "Per task upload limit"
-msgstr ""
-
-msgid "Max concurrent downloads"
-msgstr ""
-
-msgid "Max connection per server"
-msgstr ""
-
-msgid "Min split size"
-msgstr ""
-
-msgid "Max number of split"
-msgstr ""
-
-msgid "Autosave session interval"
-msgstr ""
-
-msgid "Sec"
-msgstr ""
-
-msgid "User agent value"
-msgstr ""
-
-msgid "<abbr title=\"Distributed Hash Table\">DHT</abbr> enabled"
-msgstr ""
-
-msgid "<abbr title=\"Local Peer Discovery\">LPD</abbr> enabled"
-msgstr ""
-
-msgid "Follow torrent"
-msgstr ""
-
-msgid "BitTorrent listen port"
-msgstr ""
-
-msgid "Max number of peers per torrent"
-msgstr ""
-
-msgid "Additional Bt tracker enabled"
-msgstr ""
-
-msgid "List of additional Bt tracker"
-msgstr ""
-
-msgid "Prefix of peer ID"
-msgstr ""
-
-msgid "Extra Settings"
-msgstr ""
-
-msgid "List of extra settings"
-msgstr ""
-
-msgid "View Json-RPC URL"
-msgstr ""
-
-msgid "Use WebSocket"
-msgstr ""
diff --git a/applications/luci-app-aria2/po/templates/aria2.pot b/applications/luci-app-aria2/po/templates/aria2.pot
new file mode 100644 (file)
index 0000000..357c0ae
--- /dev/null
@@ -0,0 +1,208 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid "\"Falloc\" is not available in all cases."
+msgstr ""
+
+msgid "<abbr title=\"Distributed Hash Table\">DHT</abbr> enabled"
+msgstr ""
+
+msgid "<abbr title=\"Local Peer Discovery\">LPD</abbr> enabled"
+msgstr ""
+
+msgid "Additional Bt tracker enabled"
+msgstr ""
+
+msgid "Aria2"
+msgstr ""
+
+msgid "Aria2 Settings"
+msgstr ""
+
+msgid "Aria2 Status"
+msgstr ""
+
+msgid ""
+"Aria2 is a multi-protocol &amp; multi-source download utility, here you can "
+"configure the settings."
+msgstr ""
+
+msgid "Autosave session interval"
+msgstr ""
+
+msgid "BitTorrent Settings"
+msgstr ""
+
+msgid "BitTorrent listen port"
+msgstr ""
+
+msgid "Collecting data..."
+msgstr ""
+
+msgid "Config file directory"
+msgstr ""
+
+msgid "Debug"
+msgstr ""
+
+msgid "Default download directory"
+msgstr ""
+
+msgid "Disk cache"
+msgstr ""
+
+msgid "Enable log"
+msgstr ""
+
+msgid "Enabled"
+msgstr ""
+
+msgid "Error"
+msgstr ""
+
+msgid "Extra Settings"
+msgstr ""
+
+msgid "Falloc"
+msgstr ""
+
+msgid "Files and Locations"
+msgstr ""
+
+msgid "Follow torrent"
+msgstr ""
+
+msgid "General Settings"
+msgstr ""
+
+msgid "Generate Randomly"
+msgstr ""
+
+msgid "Info"
+msgstr ""
+
+msgid "List of additional Bt tracker"
+msgstr ""
+
+msgid "List of extra settings"
+msgstr ""
+
+msgid "Log file is in the config file dir."
+msgstr ""
+
+msgid "Log level"
+msgstr ""
+
+msgid "Max concurrent downloads"
+msgstr ""
+
+msgid "Max connection per server"
+msgstr ""
+
+msgid "Max number of peers per torrent"
+msgstr ""
+
+msgid "Max number of split"
+msgstr ""
+
+msgid "Min split size"
+msgstr ""
+
+msgid "No Authentication"
+msgstr ""
+
+msgid "Notice"
+msgstr ""
+
+msgid "Off"
+msgstr ""
+
+msgid "Open WebUI-Aria2"
+msgstr ""
+
+msgid "Open YAAW"
+msgstr ""
+
+msgid "Overall download limit"
+msgstr ""
+
+msgid "Overall speed limit enabled"
+msgstr ""
+
+msgid "Overall upload limit"
+msgstr ""
+
+msgid "Per task download limit"
+msgstr ""
+
+msgid "Per task speed limit enabled"
+msgstr ""
+
+msgid "Per task upload limit"
+msgstr ""
+
+msgid "Prealloc"
+msgstr ""
+
+msgid "Preallocation"
+msgstr ""
+
+msgid "Prefix of peer ID"
+msgstr ""
+
+msgid "RPC Token"
+msgstr ""
+
+msgid "RPC authentication method"
+msgstr ""
+
+msgid "RPC password"
+msgstr ""
+
+msgid "RPC port"
+msgstr ""
+
+msgid "RPC username"
+msgstr ""
+
+msgid "Run daemon as user"
+msgstr ""
+
+msgid "Sec"
+msgstr ""
+
+msgid "Task Settings"
+msgstr ""
+
+msgid "The Aria2 service is not running."
+msgstr ""
+
+msgid "The Aria2 service is running."
+msgstr ""
+
+msgid "Token"
+msgstr ""
+
+msgid "Trunc"
+msgstr ""
+
+msgid "Use WebSocket"
+msgstr ""
+
+msgid "User agent value"
+msgstr ""
+
+msgid "Username & Password"
+msgstr ""
+
+msgid "View Json-RPC URL"
+msgstr ""
+
+msgid "Warn"
+msgstr ""
+
+msgid "in bytes, You can append K or M."
+msgstr ""
+
+msgid "in bytes/sec, You can append K or M."
+msgstr ""
index 9b7d7bc..823699d 100644 (file)
@@ -2,7 +2,7 @@ msgid "Aria2"
 msgstr ""
 
 msgid "Aria2 is a multi-protocol &amp; multi-source download utility, here you can configure the settings."
-msgstr "Aria2 是一个支持多协议多线程的下载器, 你可以在这里对其进行配置."
+msgstr "Aria2 是一个支持多协议多线程的下载器, 你可以在这里对其进行配置"
 
 msgid "Aria2 Status"
 msgstr "Aria2 状态"
@@ -67,6 +67,30 @@ msgstr "RPC令牌"
 msgid "Generate Randomly"
 msgstr "随机生成"
 
+msgid "Enable log"
+msgstr "启用日志"
+
+msgid "Log file is in the config file dir."
+msgstr "日志文件在配置文件目录下"
+
+msgid "Log level"
+msgstr "日志记录等级"
+
+msgid "Debug"
+msgstr "调试"
+
+msgid "Info"
+msgstr "信息"
+
+msgid "Notice"
+msgstr "注意"
+
+msgid "Warn"
+msgstr "警告"
+
+msgid "Error"
+msgstr "错误"
+
 msgid "Config file directory"
 msgstr "配置文件目录"
 
@@ -77,7 +101,7 @@ msgid "Disk cache"
 msgstr "磁盘缓存"
 
 msgid "in bytes, You can append K or M."
-msgstr "单位 B, 你可以在数字后跟上 K 或 M."
+msgstr "单位 B, 你可以在数字后跟上 K 或 M"
 
 msgid "Preallocation"
 msgstr "磁盘预分配"
@@ -95,7 +119,7 @@ msgid "Falloc"
 msgstr ""
 
 msgid "\"Falloc\" is not available in all cases."
-msgstr "\"Falloc\" 并不是在所有情况下都可用."
+msgstr "\"Falloc\" 并不是在所有情况下都可用"
 
 msgid "Overall speed limit enabled"
 msgstr "启用全局限速"
@@ -104,7 +128,7 @@ msgid "Overall download limit"
 msgstr "全局下载限速"
 
 msgid "in bytes/sec, You can append K or M."
-msgstr "单位 B/s, 你可以在数字后跟上 K 或 M."
+msgstr "单位 B/s, 你可以在数字后跟上 K 或 M"
 
 msgid "Overall upload limit"
 msgstr "全局上传限速"
index 16528d1..ca91813 100644 (file)
@@ -153,8 +153,8 @@ local function parse_cmdline(cmdid, args)
        end
 end
 
-function action_run(...)
-       local fs   = require "nixio.fs"
+function execute_command(callback, ...)
+       local fs = require "nixio.fs"
        local argv = parse_cmdline(...)
        if argv then
                local outfile = os.tmpname()
@@ -169,8 +169,8 @@ function action_run(...)
 
                local binary = not not (stdout:match("[%z\1-\8\14-\31]"))
 
-               luci.http.prepare_content("application/json")
-               luci.http.write_json({
+               callback({
+                       ok       = true,
                        command  = table.concat(argv, " "),
                        stdout   = not binary and stdout,
                        stderr   = stderr,
@@ -178,10 +178,41 @@ function action_run(...)
                        binary   = binary
                })
        else
-               luci.http.status(404, "No such command")
+               callback({
+                       ok       = false,
+                       code     = 404,
+                       reason   = "No such command"
+               })
+       end
+end
+
+function return_json(result)
+       if result.ok then
+               luci.http.prepare_content("application/json")
+               luci.http.write_json(result)
+       else
+               luci.http.status(result.code, result.reason)
        end
 end
 
+function action_run(...)
+       execute_command(return_json, ...)
+end
+
+function return_html(result)
+       if result.ok then
+               require("luci.template")
+               luci.template.render("commands_public", {
+                       exitcode = result.exitcode,
+                       stdout = result.stdout,
+                       stderr = result.stderr
+               })
+       else
+               luci.http.status(result.code, result.reason)
+       end
+
+end
+
 function action_download(...)
        local fs   = require "nixio.fs"
        local argv = parse_cmdline(...)
@@ -192,11 +223,11 @@ function action_download(...)
                        local name
                        if chunk:match("[%z\1-\8\14-\31]") then
                                luci.http.header("Content-Disposition", "attachment; filename=%s"
-                                                % fs.basename(argv[1]):gsub("%W+", ".") .. ".bin")
+                                       % fs.basename(argv[1]):gsub("%W+", ".") .. ".bin")
                                luci.http.prepare_content("application/octet-stream")
                        else
                                luci.http.header("Content-Disposition", "attachment; filename=%s"
-                                                % fs.basename(argv[1]):gsub("%W+", ".") .. ".txt")
+                                       % fs.basename(argv[1]):gsub("%W+", ".") .. ".txt")
                                luci.http.prepare_content("text/plain")
                        end
 
@@ -214,14 +245,24 @@ function action_download(...)
        end
 end
 
+
 function action_public(cmdid, args)
+       local disp = false
+       if string.sub(cmdid, -1) == "s" then
+               disp = true
+               cmdid = string.sub(cmdid, 1, -2)
+       end
        local uci = require "luci.model.uci".cursor()
        if cmdid and
-          uci:get("luci", cmdid) == "command" and
-          uci:get("luci", cmdid, "public") == "1"
-       then
-               action_download(cmdid, args)
-       else
-               luci.http.status(403, "Access to command denied")
+               uci:get("luci", cmdid) == "command" and
+               uci:get("luci", cmdid, "public") == "1"
+               then
+                       if disp then
+                               execute_command(return_html, cmdid, args)
+                       else
+                               action_download(cmdid, args)
+                       end
+               else
+                       luci.http.status(403, "Access to command denied")
+               end
        end
-end
index 73b9e6a..f094e18 100644 (file)
 
                if (legend && output)
                {
-                       var link = location.protocol + '//' + location.hostname +
+                       var prefix = location.protocol + '//' + location.hostname +
                                   (location.port ? ':' + location.port : '') +
-                                          location.pathname.split(';')[0] + 'command/' +
-                                          id + (args ? '/' + args : '');
-
+                                          location.pathname.split(';')[0] + 'command/';
+                       var suffix = (args ? '/' + args : '');
+                       
+                       var link = prefix + id + suffix;
+                       var link_nodownload = prefix + id + "s" + suffix;
+                       
                        legend.style.display = 'none';
                        output.parentNode.style.display = 'block';
                        output.innerHTML = String.format(
-                               '<div class="alert-message"><%:Access command with%> <a href="%s">%s</a></div>',
-                               link, link
+                               '<div class="alert-message"><p><%:Download execution result%> <a href="%s">%s</a></p><p><%:Or display result%> <a href="%s">%s</a></p></div>',
+                               link, link, link_nodownload, link_nodownload
                        );
 
                        location.hash = '#output';
diff --git a/applications/luci-app-commands/luasrc/view/commands_public.htm b/applications/luci-app-commands/luasrc/view/commands_public.htm
new file mode 100644 (file)
index 0000000..f20799d
--- /dev/null
@@ -0,0 +1,50 @@
+<%#
+ Copyright 2016 t123yh <t123yh@outlook.com>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<% css = [[
+.alert-success {
+    color: #3c763d;
+    background-color: #dff0d8;
+    border-color: #d6e9c6;
+}
+
+.alert {
+    padding: 15px;
+    margin-bottom: 20px;
+    border: 1px solid transparent;
+    border-radius: 4px;
+}
+
+.alert-warning {
+    color: #8a6d3b;
+    background-color: #fcf8e3;
+    border-color: #faebcc;
+}
+]] -%>
+
+<%+header%>
+
+<% if exitcode == 0 then %>
+    <div class="alert alert-success" role="alert"> <%:Command executed successfully.%> </div>
+<% else %>
+    <div class="alert alert-warning" role="alert"> <%:Command exited with status code %> <%= exitcode %> </div>
+<% end %>
+
+<% if stdout ~= "" then %>
+    <h3><%:Standard Output%></h3>
+    <pre><%= stdout %></pre>
+<% end %>
+
+<% if stderr ~= "" then %>
+    <h3><%:Standard Error%></h3>
+    <pre><%= stderr %></pre>
+<% end %>
+
+<script>
+    <%# Display top bar on mobile devices -%>
+    document.getElementsByClassName('brand')[0].style.setProperty("display", "block", "important");
+</script>
+
+<%+footer%>
\ No newline at end of file
index 9dc23b2..11ea896 100644 (file)
@@ -14,9 +14,6 @@ msgstr ""
 msgid "A short textual description of the configured command"
 msgstr "Una breva descripció textual de l'ordre configurat"
 
-msgid "Access command with"
-msgstr "Accedeix l'ordre amb"
-
 msgid ""
 "Allow executing the command and downloading its output without prior "
 "authentication"
@@ -42,6 +39,12 @@ msgstr "Recollint dades..."
 msgid "Command"
 msgstr "Ordre"
 
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
 msgid "Command failed"
 msgstr "L'ordre ha fallat"
 
@@ -72,6 +75,9 @@ msgstr "Descripció"
 msgid "Download"
 msgstr "Baixa"
 
+msgid "Download execution result"
+msgstr ""
+
 msgid "Failed to execute command!"
 msgstr "L'execució de l'ordre ha fallat!"
 
@@ -81,12 +87,21 @@ msgstr "Enllaç"
 msgid "Loading"
 msgstr "Carregant"
 
+msgid "Or display result"
+msgstr ""
+
 msgid "Public access"
 msgstr "Accés públic"
 
 msgid "Run"
 msgstr "Executa"
 
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
 msgid ""
 "This page allows you to configure custom shell commands which can be easily "
 "invoked from the web interface."
@@ -96,3 +111,6 @@ msgstr ""
 
 msgid "Waiting for command to complete..."
 msgstr "Esperant que l'ordre acabi..."
+
+#~ msgid "Access command with"
+#~ msgstr "Accedeix l'ordre amb"
index 64949bd..f6aa3cc 100644 (file)
@@ -14,9 +14,6 @@ msgstr ""
 msgid "A short textual description of the configured command"
 msgstr "Krátky popis nastaveného příkazu"
 
-msgid "Access command with"
-msgstr ""
-
 msgid ""
 "Allow executing the command and downloading its output without prior "
 "authentication"
@@ -40,6 +37,12 @@ msgstr "Sbírání dat..."
 msgid "Command"
 msgstr "Příkaz"
 
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
 msgid "Command failed"
 msgstr "Příkaz selhal"
 
@@ -70,6 +73,9 @@ msgstr "Popis"
 msgid "Download"
 msgstr "Stáhnout"
 
+msgid "Download execution result"
+msgstr ""
+
 msgid "Failed to execute command!"
 msgstr "Chyba při zpracování příkazu!"
 
@@ -79,12 +85,21 @@ msgstr "Odkaz"
 msgid "Loading"
 msgstr "Nahrávám"
 
+msgid "Or display result"
+msgstr ""
+
 msgid "Public access"
 msgstr "Veřejný přístup"
 
 msgid "Run"
 msgstr "Spustit"
 
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
 msgid ""
 "This page allows you to configure custom shell commands which can be easily "
 "invoked from the web interface."
index 2b7c631..e67404a 100644 (file)
@@ -14,9 +14,6 @@ msgstr ""
 msgid "A short textual description of the configured command"
 msgstr "Kurze Beschreibung des abgespeicherten Kommandos"
 
-msgid "Access command with"
-msgstr "Kommando aufrufen mit"
-
 msgid ""
 "Allow executing the command and downloading its output without prior "
 "authentication"
@@ -42,6 +39,12 @@ msgstr "Sammle Daten..."
 msgid "Command"
 msgstr "Kommando"
 
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
 msgid "Command failed"
 msgstr "Kommando fehlgeschlagen"
 
@@ -72,6 +75,9 @@ msgstr "Beschreibung"
 msgid "Download"
 msgstr "Herunterladen"
 
+msgid "Download execution result"
+msgstr ""
+
 msgid "Failed to execute command!"
 msgstr "Kommando konnte nicht ausgeführt werden!"
 
@@ -81,12 +87,21 @@ msgstr "Link"
 msgid "Loading"
 msgstr "Lade"
 
+msgid "Or display result"
+msgstr ""
+
 msgid "Public access"
 msgstr "Öffentlicher Zugriff"
 
 msgid "Run"
 msgstr "Ausführen"
 
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
 msgid ""
 "This page allows you to configure custom shell commands which can be easily "
 "invoked from the web interface."
@@ -96,3 +111,6 @@ msgstr ""
 
 msgid "Waiting for command to complete..."
 msgstr "Warte auf die Ausführung des Kommandos..."
+
+#~ msgid "Access command with"
+#~ msgstr "Kommando aufrufen mit"
index 0e9e65d..48b1836 100644 (file)
@@ -11,9 +11,6 @@ msgstr ""
 msgid "A short textual description of the configured command"
 msgstr ""
 
-msgid "Access command with"
-msgstr ""
-
 msgid ""
 "Allow executing the command and downloading its output without prior "
 "authentication"
@@ -37,6 +34,12 @@ msgstr ""
 msgid "Command"
 msgstr ""
 
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
 msgid "Command failed"
 msgstr ""
 
@@ -67,6 +70,9 @@ msgstr ""
 msgid "Download"
 msgstr ""
 
+msgid "Download execution result"
+msgstr ""
+
 msgid "Failed to execute command!"
 msgstr ""
 
@@ -76,12 +82,21 @@ msgstr ""
 msgid "Loading"
 msgstr ""
 
+msgid "Or display result"
+msgstr ""
+
 msgid "Public access"
 msgstr ""
 
 msgid "Run"
 msgstr ""
 
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
 msgid ""
 "This page allows you to configure custom shell commands which can be easily "
 "invoked from the web interface."
index 754a229..ec192e4 100644 (file)
@@ -1,19 +1,20 @@
 msgid ""
 msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Last-Translator: Automatically generated\n"
+"Project-Id-Version: \n"
+"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
 "Language-Team: none\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language: en\n"
+"X-Generator: Poedit 1.8.11\n"
 
 msgid "A short textual description of the configured command"
 msgstr "A short textual description of the configured command"
 
-msgid "Access command with"
-msgstr "Access command with"
-
 msgid ""
 "Allow executing the command and downloading its output without prior "
 "authentication"
@@ -39,6 +40,12 @@ msgstr "Collecting data..."
 msgid "Command"
 msgstr "Command"
 
+msgid "Command executed successfully."
+msgstr "Command executed successfully."
+
+msgid "Command exited with status code"
+msgstr "Command exited with status code"
+
 msgid "Command failed"
 msgstr "Command failed"
 
@@ -69,6 +76,9 @@ msgstr "Description"
 msgid "Download"
 msgstr "Download"
 
+msgid "Download execution result"
+msgstr "Download execution result"
+
 msgid "Failed to execute command!"
 msgstr "Failed to execute command!"
 
@@ -78,12 +88,21 @@ msgstr "Link"
 msgid "Loading"
 msgstr "Loading"
 
+msgid "Or display result"
+msgstr "Or display result"
+
 msgid "Public access"
 msgstr "Public access"
 
 msgid "Run"
 msgstr "Run"
 
+msgid "Standard Error"
+msgstr "Standard Error"
+
+msgid "Standard Output"
+msgstr "Standard Output"
+
 msgid ""
 "This page allows you to configure custom shell commands which can be easily "
 "invoked from the web interface."
@@ -93,3 +112,6 @@ msgstr ""
 
 msgid "Waiting for command to complete..."
 msgstr "Waiting for command to complete..."
+
+#~ msgid "Command exited with status code "
+#~ msgstr "Command exited with status code "
index 8052452..b9029b9 100644 (file)
@@ -14,9 +14,6 @@ msgstr ""
 msgid "A short textual description of the configured command"
 msgstr "Descripción breve del comando a configurar"
 
-msgid "Access command with"
-msgstr "Acceder al comando con"
-
 msgid ""
 "Allow executing the command and downloading its output without prior "
 "authentication"
@@ -41,6 +38,12 @@ msgstr "Recuperando datos..."
 msgid "Command"
 msgstr "Comando"
 
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
 msgid "Command failed"
 msgstr "Falló"
 
@@ -71,6 +74,9 @@ msgstr "Descripción"
 msgid "Download"
 msgstr "Descarga"
 
+msgid "Download execution result"
+msgstr ""
+
 msgid "Failed to execute command!"
 msgstr "¡Error al ejecutar el comando!"
 
@@ -80,12 +86,21 @@ msgstr "Enlace"
 msgid "Loading"
 msgstr "Cargando"
 
+msgid "Or display result"
+msgstr ""
+
 msgid "Public access"
 msgstr "Acceso público"
 
 msgid "Run"
 msgstr "Ejecutar"
 
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
 msgid ""
 "This page allows you to configure custom shell commands which can be easily "
 "invoked from the web interface."
@@ -95,3 +110,6 @@ msgstr ""
 
 msgid "Waiting for command to complete..."
 msgstr "Esperando a que termine el comando..."
+
+#~ msgid "Access command with"
+#~ msgstr "Acceder al comando con"
index fac1aff..f348326 100644 (file)
@@ -14,9 +14,6 @@ msgstr ""
 msgid "A short textual description of the configured command"
 msgstr "Une courte description de la commande configurée"
 
-msgid "Access command with"
-msgstr "Accéder à la commande par"
-
 msgid ""
 "Allow executing the command and downloading its output without prior "
 "authentication"
@@ -44,6 +41,12 @@ msgstr "Récupération des données ..."
 msgid "Command"
 msgstr "Commande"
 
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
 msgid "Command failed"
 msgstr "Echec de la commande"
 
@@ -74,6 +77,9 @@ msgstr "Description"
 msgid "Download"
 msgstr "Télécharger"
 
+msgid "Download execution result"
+msgstr ""
+
 msgid "Failed to execute command!"
 msgstr "Echec de l'exécution de la commande ! "
 
@@ -83,12 +89,21 @@ msgstr "Lien"
 msgid "Loading"
 msgstr "Chargement"
 
+msgid "Or display result"
+msgstr ""
+
 msgid "Public access"
 msgstr "Accès public"
 
 msgid "Run"
 msgstr "Exécuter"
 
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
 msgid ""
 "This page allows you to configure custom shell commands which can be easily "
 "invoked from the web interface."
@@ -98,3 +113,6 @@ msgstr ""
 
 msgid "Waiting for command to complete..."
 msgstr "En attente de la commande pour finir..."
+
+#~ msgid "Access command with"
+#~ msgstr "Accéder à la commande par"
index 0e9e65d..48b1836 100644 (file)
@@ -11,9 +11,6 @@ msgstr ""
 msgid "A short textual description of the configured command"
 msgstr ""
 
-msgid "Access command with"
-msgstr ""
-
 msgid ""
 "Allow executing the command and downloading its output without prior "
 "authentication"
@@ -37,6 +34,12 @@ msgstr ""
 msgid "Command"
 msgstr ""
 
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
 msgid "Command failed"
 msgstr ""
 
@@ -67,6 +70,9 @@ msgstr ""
 msgid "Download"
 msgstr ""
 
+msgid "Download execution result"
+msgstr ""
+
 msgid "Failed to execute command!"
 msgstr ""
 
@@ -76,12 +82,21 @@ msgstr ""
 msgid "Loading"
 msgstr ""
 
+msgid "Or display result"
+msgstr ""
+
 msgid "Public access"
 msgstr ""
 
 msgid "Run"
 msgstr ""
 
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
 msgid ""
 "This page allows you to configure custom shell commands which can be easily "
 "invoked from the web interface."
index 5cd0ec7..a9c759b 100644 (file)
@@ -14,9 +14,6 @@ msgstr ""
 msgid "A short textual description of the configured command"
 msgstr "A beállított parancs rövid szöveges leírása"
 
-msgid "Access command with"
-msgstr "Parancs hozzáférése"
-
 msgid ""
 "Allow executing the command and downloading its output without prior "
 "authentication"
@@ -42,6 +39,12 @@ msgstr "Adatgyűjtés..."
 msgid "Command"
 msgstr "Paracs"
 
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
 msgid "Command failed"
 msgstr "Parancs végrehajtás sikertelen"
 
@@ -72,6 +75,9 @@ msgstr "Leírás"
 msgid "Download"
 msgstr "Letöltés"
 
+msgid "Download execution result"
+msgstr ""
+
 msgid "Failed to execute command!"
 msgstr "Parancs végrehajtása sikertelen!"
 
@@ -81,12 +87,21 @@ msgstr "Link"
 msgid "Loading"
 msgstr "Betöltés"
 
+msgid "Or display result"
+msgstr ""
+
 msgid "Public access"
 msgstr "Nyilvános hozzáférés"
 
 msgid "Run"
 msgstr "Futtatás"
 
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
 msgid ""
 "This page allows you to configure custom shell commands which can be easily "
 "invoked from the web interface."
@@ -96,3 +111,6 @@ msgstr ""
 
 msgid "Waiting for command to complete..."
 msgstr "Várakozás a parancs befejezésére..."
+
+#~ msgid "Access command with"
+#~ msgstr "Parancs hozzáférése"
index c14b910..8155a07 100644 (file)
@@ -14,9 +14,6 @@ msgstr ""
 msgid "A short textual description of the configured command"
 msgstr "Una breve descrizione testuale del comando configurato"
 
-msgid "Access command with"
-msgstr "Accesso comando con"
-
 msgid ""
 "Allow executing the command and downloading its output without prior "
 "authentication"
@@ -43,6 +40,12 @@ msgstr "Raccolta dei dati..."
 msgid "Command"
 msgstr "Comando"
 
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
 msgid "Command failed"
 msgstr "Comando fallito"
 
@@ -73,6 +76,9 @@ msgstr "Descrizione"
 msgid "Download"
 msgstr "Download"
 
+msgid "Download execution result"
+msgstr ""
+
 msgid "Failed to execute command!"
 msgstr "Impossibile eseguire il comando!"
 
@@ -82,12 +88,21 @@ msgstr "Collegamento"
 msgid "Loading"
 msgstr "Caricamento"
 
+msgid "Or display result"
+msgstr ""
+
 msgid "Public access"
 msgstr "Accesso Pubblico"
 
 msgid "Run"
 msgstr "Esegui"
 
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
 msgid ""
 "This page allows you to configure custom shell commands which can be easily "
 "invoked from the web interface."
@@ -97,3 +112,6 @@ msgstr ""
 
 msgid "Waiting for command to complete..."
 msgstr "In attesa del comando da completare..."
+
+#~ msgid "Access command with"
+#~ msgstr "Accesso comando con"
index 3b01a35..307951c 100644 (file)
@@ -1,26 +1,24 @@
 msgid ""
 msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-10-05 17:15+0200\n"
-"Last-Translator: Kentaro <kentaro.matsuyama@gmail.com>\n"
+"Project-Id-Version: \n"
+"PO-Revision-Date: 2017-01-21 18:09+0900\n"
+"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
 "Language-Team: none\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: Pootle 2.0.6\n"
+"X-Generator: Poedit 1.8.11\n"
+"POT-Creation-Date: \n"
 
 msgid "A short textual description of the configured command"
 msgstr "設定したコマンドの簡単な説明文を記載します"
 
-msgid "Access command with"
-msgstr ""
-
 msgid ""
 "Allow executing the command and downloading its output without prior "
 "authentication"
-msgstr ""
+msgstr "事前認証無しでのコマンドの実行と、結果出力のダウンロードを許可します。"
 
 msgid "Allow the user to provide additional command line arguments"
 msgstr "コマンドラインに対する引数の追記を許可するか設定します"
@@ -40,6 +38,12 @@ msgstr "データ収集中です..."
 msgid "Command"
 msgstr "コマンド"
 
+msgid "Command executed successfully."
+msgstr "コマンドの実行に成功しました。"
+
+msgid "Command exited with status code"
+msgstr "コマンドは次のステータス コードで終了しました:"
+
 msgid "Command failed"
 msgstr "コマンド失敗"
 
@@ -70,6 +74,9 @@ msgstr "説明"
 msgid "Download"
 msgstr "ダウンロード"
 
+msgid "Download execution result"
+msgstr "実行結果のダウンロード:"
+
 msgid "Failed to execute command!"
 msgstr "コマンドの実行に失敗しました!"
 
@@ -79,16 +86,30 @@ msgstr "リンク"
 msgid "Loading"
 msgstr "読み込み中"
 
+msgid "Or display result"
+msgstr "または結果の表示:"
+
 msgid "Public access"
 msgstr "パブリック・アクセス"
 
 msgid "Run"
 msgstr "実行"
 
+msgid "Standard Error"
+msgstr "標準エラー"
+
+msgid "Standard Output"
+msgstr "標準出力"
+
 msgid ""
 "This page allows you to configure custom shell commands which can be easily "
 "invoked from the web interface."
-msgstr "このページでは、ウェブインターフェースから簡単にシェル・コマンドを実行することができます。"
+msgstr ""
+"このページでは、ウェブインターフェースから簡単にシェル・コマンドを実行するこ"
+"とができます。"
 
 msgid "Waiting for command to complete..."
 msgstr "コマンド実行中です..."
+
+#~ msgid "Access command with"
+#~ msgstr "コマンドへのアクセス"
index 6fbb983..ad2f151 100644 (file)
@@ -10,9 +10,6 @@ msgstr ""
 msgid "A short textual description of the configured command"
 msgstr ""
 
-msgid "Access command with"
-msgstr ""
-
 msgid ""
 "Allow executing the command and downloading its output without prior "
 "authentication"
@@ -36,6 +33,12 @@ msgstr ""
 msgid "Command"
 msgstr ""
 
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
 msgid "Command failed"
 msgstr ""
 
@@ -66,6 +69,9 @@ msgstr ""
 msgid "Download"
 msgstr ""
 
+msgid "Download execution result"
+msgstr ""
+
 msgid "Failed to execute command!"
 msgstr ""
 
@@ -75,12 +81,21 @@ msgstr ""
 msgid "Loading"
 msgstr ""
 
+msgid "Or display result"
+msgstr ""
+
 msgid "Public access"
 msgstr ""
 
 msgid "Run"
 msgstr ""
 
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
 msgid ""
 "This page allows you to configure custom shell commands which can be easily "
 "invoked from the web interface."
index 29b76e5..593c976 100644 (file)
@@ -14,9 +14,6 @@ msgstr ""
 msgid "A short textual description of the configured command"
 msgstr "En kort tekstlig beskrivelse av den konfigurerte kommandoen"
 
-msgid "Access command with"
-msgstr "Åpne kommandoen med"
-
 msgid ""
 "Allow executing the command and downloading its output without prior "
 "authentication"
@@ -42,6 +39,12 @@ msgstr "Henter data..."
 msgid "Command"
 msgstr "Kommando"
 
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
 msgid "Command failed"
 msgstr "Kommando feilet"
 
@@ -72,6 +75,9 @@ msgstr "Beskrivelse"
 msgid "Download"
 msgstr "Nedlasting"
 
+msgid "Download execution result"
+msgstr ""
+
 msgid "Failed to execute command!"
 msgstr "Kunne ikke utføre kommandoen!"
 
@@ -81,12 +87,21 @@ msgstr "Link"
 msgid "Loading"
 msgstr "Laster"
 
+msgid "Or display result"
+msgstr ""
+
 msgid "Public access"
 msgstr "Tilgjengelig for alle"
 
 msgid "Run"
 msgstr "Kjør"
 
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
 msgid ""
 "This page allows you to configure custom shell commands which can be easily "
 "invoked from the web interface."
@@ -96,3 +111,6 @@ msgstr ""
 
 msgid "Waiting for command to complete..."
 msgstr "Venter på at kommandoen fullføres..."
+
+#~ msgid "Access command with"
+#~ msgstr "Åpne kommandoen med"
index 6f660ba..7c62eb0 100644 (file)
@@ -15,9 +15,6 @@ msgstr ""
 msgid "A short textual description of the configured command"
 msgstr "Krótki opis konfigurowanej komendy"
 
-msgid "Access command with"
-msgstr "Dostęp do komendy przez"
-
 msgid ""
 "Allow executing the command and downloading its output without prior "
 "authentication"
@@ -43,6 +40,12 @@ msgstr "Zbieram dane:"
 msgid "Command"
 msgstr "Komenda"
 
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
 msgid "Command failed"
 msgstr "Zła komenda"
 
@@ -73,6 +76,9 @@ msgstr "Opis"
 msgid "Download"
 msgstr "Download"
 
+msgid "Download execution result"
+msgstr ""
+
 msgid "Failed to execute command!"
 msgstr "Nie można wykonać komendy!"
 
@@ -82,12 +88,21 @@ msgstr "Łącze"
 msgid "Loading"
 msgstr "Ładowanie"
 
+msgid "Or display result"
+msgstr ""
+
 msgid "Public access"
 msgstr "Publiczny dostęp"
 
 msgid "Run"
 msgstr "Uruchom"
 
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
 msgid ""
 "This page allows you to configure custom shell commands which can be easily "
 "invoked from the web interface."
@@ -97,3 +112,6 @@ msgstr ""
 
 msgid "Waiting for command to complete..."
 msgstr "Czekanie na wykonanie komendy..."
+
+#~ msgid "Access command with"
+#~ msgstr "Dostęp do komendy przez"
index 83c7bd5..f6bee73 100644 (file)
@@ -14,9 +14,6 @@ msgstr ""
 msgid "A short textual description of the configured command"
 msgstr "Uma pequena descrição textual do comando configurado"
 
-msgid "Access command with"
-msgstr "Acessar o comando com"
-
 msgid ""
 "Allow executing the command and downloading its output without prior "
 "authentication"
@@ -42,6 +39,12 @@ msgstr "Adquirindo dados..."
 msgid "Command"
 msgstr "Comando"
 
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
 msgid "Command failed"
 msgstr "O comando falhou"
 
@@ -72,6 +75,9 @@ msgstr "Descrição"
 msgid "Download"
 msgstr "Baixar"
 
+msgid "Download execution result"
+msgstr ""
+
 msgid "Failed to execute command!"
 msgstr "Falha ao executar comando!"
 
@@ -81,12 +87,21 @@ msgstr "Endereço"
 msgid "Loading"
 msgstr "Carregando"
 
+msgid "Or display result"
+msgstr ""
+
 msgid "Public access"
 msgstr "Acesso público"
 
 msgid "Run"
 msgstr "Executar"
 
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
 msgid ""
 "This page allows you to configure custom shell commands which can be easily "
 "invoked from the web interface."
@@ -96,3 +111,6 @@ msgstr ""
 
 msgid "Waiting for command to complete..."
 msgstr "Aguardando a conclusão do comando..."
+
+#~ msgid "Access command with"
+#~ msgstr "Acessar o comando com"
index a46b7d2..b2ad0ae 100644 (file)
@@ -14,9 +14,6 @@ msgstr ""
 msgid "A short textual description of the configured command"
 msgstr "Uma pequena descrição textual do comando configurado"
 
-msgid "Access command with"
-msgstr "Aceder ao comando com"
-
 msgid ""
 "Allow executing the command and downloading its output without prior "
 "authentication"
@@ -43,6 +40,12 @@ msgstr "A obter dados..."
 msgid "Command"
 msgstr "Comando"
 
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
 msgid "Command failed"
 msgstr "O comando falhou"
 
@@ -73,6 +76,9 @@ msgstr "Descrição"
 msgid "Download"
 msgstr "Descarregar"
 
+msgid "Download execution result"
+msgstr ""
+
 msgid "Failed to execute command!"
 msgstr "Falha ao executar comando!"
 
@@ -82,12 +88,21 @@ msgstr "Link"
 msgid "Loading"
 msgstr "A carregar"
 
+msgid "Or display result"
+msgstr ""
+
 msgid "Public access"
 msgstr "Acesso público"
 
 msgid "Run"
 msgstr "Executar"
 
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
 msgid ""
 "This page allows you to configure custom shell commands which can be easily "
 "invoked from the web interface."
@@ -97,3 +112,6 @@ msgstr ""
 
 msgid "Waiting for command to complete..."
 msgstr "A aguardar que o comando termine..."
+
+#~ msgid "Access command with"
+#~ msgstr "Aceder ao comando com"
index 05c4574..57d1f7b 100644 (file)
@@ -15,9 +15,6 @@ msgstr ""
 msgid "A short textual description of the configured command"
 msgstr "O scurta descriere textuala a comenzii configurate"
 
-msgid "Access command with"
-msgstr "Acces la comanda cu"
-
 msgid ""
 "Allow executing the command and downloading its output without prior "
 "authentication"
@@ -43,6 +40,12 @@ msgstr "Colectare date..."
 msgid "Command"
 msgstr "Comandă"
 
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
 msgid "Command failed"
 msgstr "Comandă eşuată"
 
@@ -73,6 +76,9 @@ msgstr "Descriere"
 msgid "Download"
 msgstr "Descarca"
 
+msgid "Download execution result"
+msgstr ""
+
 msgid "Failed to execute command!"
 msgstr "S-a esuat executarea comenzii!!"
 
@@ -82,12 +88,21 @@ msgstr "Link"
 msgid "Loading"
 msgstr "Se incarca"
 
+msgid "Or display result"
+msgstr ""
+
 msgid "Public access"
 msgstr "Access public"
 
 msgid "Run"
 msgstr "Ruleaza"
 
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
 msgid ""
 "This page allows you to configure custom shell commands which can be easily "
 "invoked from the web interface."
@@ -97,3 +112,6 @@ msgstr ""
 
 msgid "Waiting for command to complete..."
 msgstr "Astept finalizarea comenzii..."
+
+#~ msgid "Access command with"
+#~ msgstr "Acces la comanda cu"
index 6197231..0c035ab 100644 (file)
@@ -15,9 +15,6 @@ msgstr ""
 msgid "A short textual description of the configured command"
 msgstr "Короткое текстовое описание команды"
 
-msgid "Access command with"
-msgstr "Доступ к команде через"
-
 #, fuzzy
 msgid ""
 "Allow executing the command and downloading its output without prior "
@@ -46,6 +43,12 @@ msgstr "Сбор данных..."
 msgid "Command"
 msgstr "Команда"
 
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
 msgid "Command failed"
 msgstr "Команда не выполнена"
 
@@ -76,6 +79,9 @@ msgstr "Описание"
 msgid "Download"
 msgstr "Скачать"
 
+msgid "Download execution result"
+msgstr ""
+
 msgid "Failed to execute command!"
 msgstr "Ошибка выполнения команды!"
 
@@ -85,12 +91,21 @@ msgstr "Ссылка"
 msgid "Loading"
 msgstr "Загрузка"
 
+msgid "Or display result"
+msgstr ""
+
 msgid "Public access"
 msgstr "Публичный доступ"
 
 msgid "Run"
 msgstr "Запуск"
 
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
 msgid ""
 "This page allows you to configure custom shell commands which can be easily "
 "invoked from the web interface."
@@ -100,3 +115,6 @@ msgstr ""
 
 msgid "Waiting for command to complete..."
 msgstr "Ожидание завершения команды..."
+
+#~ msgid "Access command with"
+#~ msgstr "Доступ к команде через"
index 4133dfb..17bed40 100644 (file)
@@ -11,9 +11,6 @@ msgstr ""
 msgid "A short textual description of the configured command"
 msgstr ""
 
-msgid "Access command with"
-msgstr ""
-
 msgid ""
 "Allow executing the command and downloading its output without prior "
 "authentication"
@@ -37,6 +34,12 @@ msgstr ""
 msgid "Command"
 msgstr ""
 
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
 msgid "Command failed"
 msgstr ""
 
@@ -67,6 +70,9 @@ msgstr ""
 msgid "Download"
 msgstr ""
 
+msgid "Download execution result"
+msgstr ""
+
 msgid "Failed to execute command!"
 msgstr ""
 
@@ -76,12 +82,21 @@ msgstr ""
 msgid "Loading"
 msgstr ""
 
+msgid "Or display result"
+msgstr ""
+
 msgid "Public access"
 msgstr ""
 
 msgid "Run"
 msgstr ""
 
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
 msgid ""
 "This page allows you to configure custom shell commands which can be easily "
 "invoked from the web interface."
index 9fbe0af..5a4c255 100644 (file)
@@ -12,9 +12,6 @@ msgstr ""
 msgid "A short textual description of the configured command"
 msgstr ""
 
-msgid "Access command with"
-msgstr ""
-
 msgid ""
 "Allow executing the command and downloading its output without prior "
 "authentication"
@@ -38,6 +35,12 @@ msgstr ""
 msgid "Command"
 msgstr ""
 
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
 msgid "Command failed"
 msgstr ""
 
@@ -68,6 +71,9 @@ msgstr ""
 msgid "Download"
 msgstr ""
 
+msgid "Download execution result"
+msgstr ""
+
 msgid "Failed to execute command!"
 msgstr ""
 
@@ -77,12 +83,21 @@ msgstr ""
 msgid "Loading"
 msgstr ""
 
+msgid "Or display result"
+msgstr ""
+
 msgid "Public access"
 msgstr ""
 
 msgid "Run"
 msgstr ""
 
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
 msgid ""
 "This page allows you to configure custom shell commands which can be easily "
 "invoked from the web interface."
index 5d2ffae..31df11d 100644 (file)
@@ -4,9 +4,6 @@ msgstr "Content-Type: text/plain; charset=UTF-8"
 msgid "A short textual description of the configured command"
 msgstr ""
 
-msgid "Access command with"
-msgstr ""
-
 msgid ""
 "Allow executing the command and downloading its output without prior "
 "authentication"
@@ -30,6 +27,12 @@ msgstr ""
 msgid "Command"
 msgstr ""
 
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
 msgid "Command failed"
 msgstr ""
 
@@ -60,6 +63,9 @@ msgstr ""
 msgid "Download"
 msgstr ""
 
+msgid "Download execution result"
+msgstr ""
+
 msgid "Failed to execute command!"
 msgstr ""
 
@@ -69,12 +75,21 @@ msgstr ""
 msgid "Loading"
 msgstr ""
 
+msgid "Or display result"
+msgstr ""
+
 msgid "Public access"
 msgstr ""
 
 msgid "Run"
 msgstr ""
 
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
 msgid ""
 "This page allows you to configure custom shell commands which can be easily "
 "invoked from the web interface."
index 4132274..587bc2b 100644 (file)
@@ -11,9 +11,6 @@ msgstr ""
 msgid "A short textual description of the configured command"
 msgstr ""
 
-msgid "Access command with"
-msgstr ""
-
 msgid ""
 "Allow executing the command and downloading its output without prior "
 "authentication"
@@ -37,6 +34,12 @@ msgstr ""
 msgid "Command"
 msgstr ""
 
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
 msgid "Command failed"
 msgstr ""
 
@@ -67,6 +70,9 @@ msgstr ""
 msgid "Download"
 msgstr ""
 
+msgid "Download execution result"
+msgstr ""
+
 msgid "Failed to execute command!"
 msgstr ""
 
@@ -76,12 +82,21 @@ msgstr ""
 msgid "Loading"
 msgstr ""
 
+msgid "Or display result"
+msgstr ""
+
 msgid "Public access"
 msgstr ""
 
 msgid "Run"
 msgstr ""
 
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
 msgid ""
 "This page allows you to configure custom shell commands which can be easily "
 "invoked from the web interface."
index 74a19f3..f72fc93 100644 (file)
@@ -16,9 +16,6 @@ msgstr ""
 msgid "A short textual description of the configured command"
 msgstr "Короткий опис команд налаштування"
 
-msgid "Access command with"
-msgstr ""
-
 msgid ""
 "Allow executing the command and downloading its output without prior "
 "authentication"
@@ -43,6 +40,12 @@ msgstr "Збирання даних..."
 msgid "Command"
 msgstr ""
 
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
 msgid "Command failed"
 msgstr "Команда не виконана"
 
@@ -74,6 +77,9 @@ msgstr "Опис"
 msgid "Download"
 msgstr "Завантажити"
 
+msgid "Download execution result"
+msgstr ""
+
 #, fuzzy
 msgid "Failed to execute command!"
 msgstr "Помилка під час запуску команди!"
@@ -84,12 +90,21 @@ msgstr ""
 msgid "Loading"
 msgstr "Триває завантаження"
 
+msgid "Or display result"
+msgstr ""
+
 msgid "Public access"
 msgstr "Відкритий доступ"
 
 msgid "Run"
 msgstr "Запустити"
 
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
 #, fuzzy
 msgid ""
 "This page allows you to configure custom shell commands which can be easily "
index 4132274..587bc2b 100644 (file)
@@ -11,9 +11,6 @@ msgstr ""
 msgid "A short textual description of the configured command"
 msgstr ""
 
-msgid "Access command with"
-msgstr ""
-
 msgid ""
 "Allow executing the command and downloading its output without prior "
 "authentication"
@@ -37,6 +34,12 @@ msgstr ""
 msgid "Command"
 msgstr ""
 
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
 msgid "Command failed"
 msgstr ""
 
@@ -67,6 +70,9 @@ msgstr ""
 msgid "Download"
 msgstr ""
 
+msgid "Download execution result"
+msgstr ""
+
 msgid "Failed to execute command!"
 msgstr ""
 
@@ -76,12 +82,21 @@ msgstr ""
 msgid "Loading"
 msgstr ""
 
+msgid "Or display result"
+msgstr ""
+
 msgid "Public access"
 msgstr ""
 
 msgid "Run"
 msgstr ""
 
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
 msgid ""
 "This page allows you to configure custom shell commands which can be easily "
 "invoked from the web interface."
index 8b2b032..90f1dbe 100644 (file)
@@ -1,22 +1,20 @@
 msgid ""
 msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-10-08 15:47+0200\n"
-"Last-Translator: Tanyingyu <Tanyingyu@163.com>\n"
+"Project-Id-Version: \n"
+"PO-Revision-Date: 2017-01-21 09:34+0900\n"
+"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
 "Language-Team: none\n"
 "Language: zh_CN\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"
+"X-Generator: Poedit 1.8.11\n"
+"POT-Creation-Date: \n"
 
 msgid "A short textual description of the configured command"
 msgstr "简短描述命令用途"
 
-msgid "Access command with"
-msgstr "访问命令"
-
 msgid ""
 "Allow executing the command and downloading its output without prior "
 "authentication"
@@ -40,6 +38,12 @@ msgstr "收集数据:"
 msgid "Command"
 msgstr "命令"
 
+msgid "Command executed successfully."
+msgstr "命令成功执行。"
+
+msgid "Command exited with status code"
+msgstr "命令退出,状态码:"
+
 msgid "Command failed"
 msgstr "执行命令失败"
 
@@ -70,6 +74,9 @@ msgstr "描述"
 msgid "Download"
 msgstr "下载"
 
+msgid "Download execution result"
+msgstr "下载执行结果"
+
 msgid "Failed to execute command!"
 msgstr "执行命令失败!"
 
@@ -79,12 +86,21 @@ msgstr "连接"
 msgid "Loading"
 msgstr "加载中"
 
+msgid "Or display result"
+msgstr "显示执行结果"
+
 msgid "Public access"
 msgstr "公共访问"
 
 msgid "Run"
 msgstr "运行"
 
+msgid "Standard Error"
+msgstr "标准错误流"
+
+msgid "Standard Output"
+msgstr "标准输出流"
+
 msgid ""
 "This page allows you to configure custom shell commands which can be easily "
 "invoked from the web interface."
@@ -92,3 +108,6 @@ msgstr "此页面允许您配置自定义Shell命令,并可以从Web界面调
 
 msgid "Waiting for command to complete..."
 msgstr "等待命令执行完成... ..."
+
+#~ msgid "Command exited with status code "
+#~ msgstr "命令退出,状态码:"
index 4377ead..f1f4525 100644 (file)
@@ -14,9 +14,6 @@ msgstr ""
 msgid "A short textual description of the configured command"
 msgstr "以短文描述設定指令"
 
-msgid "Access command with"
-msgstr "存取指令"
-
 msgid ""
 "Allow executing the command and downloading its output without prior "
 "authentication"
@@ -40,6 +37,12 @@ msgstr "收集資料中..."
 msgid "Command"
 msgstr "指令"
 
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
 msgid "Command failed"
 msgstr "命令失敗"
 
@@ -70,6 +73,9 @@ msgstr "描述"
 msgid "Download"
 msgstr "下載"
 
+msgid "Download execution result"
+msgstr ""
+
 msgid "Failed to execute command!"
 msgstr "執行指令失敗!"
 
@@ -79,12 +85,21 @@ msgstr "連結"
 msgid "Loading"
 msgstr "掛載"
 
+msgid "Or display result"
+msgstr ""
+
 msgid "Public access"
 msgstr "公用存取"
 
 msgid "Run"
 msgstr "執行"
 
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
 msgid ""
 "This page allows you to configure custom shell commands which can be easily "
 "invoked from the web interface."
@@ -92,3 +107,6 @@ msgstr "只要可以從web介輕易調用, 這頁面允許你自定shell指令."
 
 msgid "Waiting for command to complete..."
 msgstr "等待完整命令中..."
+
+#~ msgid "Access command with"
+#~ msgstr "存取指令"
index c1a22c8..88c905a 100644 (file)
@@ -1,20 +1,22 @@
 #
-# Copyright (C) 2008-2016 The LuCI Team <luci@lists.subsignal.org>
-#
-# This is free software, licensed under the Apache License, Version 2.0 .
+# Copyright 2008 Steven Barth <steven@midlink.org>
+# Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+# Copyright 2013 Manuel Munz <freifunk at somakoma dot de>
+# Copyright 2014-2016 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
 #
+# This is free software, licensed under the Apache License, Version 2.0
 
 include $(TOPDIR)/rules.mk
 
-PKG_NAME:=luci-app-ddns
+PKG_NAME:=luci-app-ddns
 
 # Version == major.minor.patch
 # increase on new functionality (minor) or patches (patch)
-PKG_VERSION:=2.4.6
+PKG_VERSION:=2.4.8
 
 # Release == build
 # increase on changes of translation files
-PKG_RELEASE:=2
+PKG_RELEASE:=1
 
 PKG_LICENSE:=Apache-2.0
 PKG_MAINTAINER:=Christian Schoenebeck <christian.schoenebeck@gmail.com>
@@ -22,15 +24,13 @@ PKG_MAINTAINER:=Christian Schoenebeck <christian.schoenebeck@gmail.com>
 # LuCI specific settings
 LUCI_TITLE:=LuCI Support for Dynamic DNS Client (ddns-scripts)
 LUCI_DEPENDS:=+luci-mod-admin-full +ddns-scripts
-LUCI_PKGARCH:=all
+LUCI_PKGARCH:=all
 
 define Package/$(PKG_NAME)/config
 # shown in make menuconfig <Help>
 help
        $(LUCI_TITLE)
-       .
        Version: $(PKG_VERSION)-$(PKG_RELEASE)
-       $(PKG_MAINTAINER)
 endef
 
 include ../../luci.mk
index 1f2e6f2..63bb8bf 100755 (executable)
@@ -17,12 +17,14 @@ local UCI  = require "luci.model.uci"
 local UTIL = require "luci.util"
 local DDNS = require "luci.tools.ddns"         -- ddns multiused functions
 
+luci_helper = "/usr/lib/ddns/dynamic_dns_lucihelper.sh"
+
 local srv_name    = "ddns-scripts"
-local srv_ver_min = "2.7.2"                    -- minimum version of service required
-local srv_ver_cmd = [[/usr/lib/ddns/dynamic_dns_updater.sh --version | awk {'print $2'}]]
+local srv_ver_min = "2.7.6"                    -- minimum version of service required
+local srv_ver_cmd = luci_helper .. [[ -V | awk {'print $2'}]]
 local app_name    = "luci-app-ddns"
 local app_title   = "Dynamic DNS"
-local app_version = "2.4.6-1"
+local app_version = "2.4.8-1"
 
 function index()
        local nxfs      = require "nixio.fs"            -- global definitions not available
@@ -96,14 +98,14 @@ function app_title_main()
 end
 function service_version()
        local ver = nil
+
+       ver = UTIL.exec(srv_ver_cmd)
+       if #ver > 0 then return ver end
+
        IPKG.list_installed(srv_name, function(n, v, d)
                        if v and (#v > 0) then ver = v end
                end
        )
-       if not ver or (#ver == 0) then
-               ver = UTIL.exec(srv_ver_cmd)
-               if #ver == 0 then ver = nil end
-       end
        return  ver
 end
 function service_ok()
@@ -191,10 +193,14 @@ local function _get_status()
                local force_ipversion = tonumber(s["force_ipversion"] or 0)
                local force_dnstcp = tonumber(s["force_dnstcp"] or 0)
                local is_glue = tonumber(s["is_glue"] or 0)
-               local command = [[/usr/lib/ddns/dynamic_dns_lucihelper.sh]]
-               command = command .. [[ get_registered_ip ]] .. lookup_host .. [[ ]] .. use_ipv6 ..
-                       [[ ]] .. force_ipversion .. [[ ]] .. force_dnstcp ..
-                       [[ ]] .. is_glue .. [[ ]] .. dnsserver
+               local command = luci_helper .. [[ -]]
+               if (use_ipv6 == 1) then command = command .. [[6]] end
+               if (force_ipversion == 1) then command = command .. [[f]] end
+               if (force_dnstcp == 1) then command = command .. [[t]] end
+               if (is_glue == 1) then command = command .. [[g]] end
+               command = command .. [[l ]] .. lookup_host
+               if (#dnsserver > 0) then command = command .. [[ -d ]] .. dnsserver end
+               command = command .. [[ -- get_registered_ip]]
                local reg_ip = SYS.exec(command)
                if reg_ip == "" then
                        reg_ip = "_nodata_"
@@ -221,8 +227,8 @@ end
 function logread(section)
        -- read application settings
        local uci       = UCI.cursor()
-       local log_dir   = uci:get("ddns", "global", "log_dir") or "/var/log/ddns"
-       local lfile     = log_dir .. "/" .. section .. ".log"
+       local ldir      = uci:get("ddns", "global", "ddns_logdir") or "/var/log/ddns"
+       local lfile     = ldir .. "/" .. section .. ".log"
        local ldata     = NXFS.readfile(lfile)
 
        if not ldata or #ldata == 0 then
@@ -289,8 +295,9 @@ function startstop(section, enabled)
        uci:commit("ddns")
        uci:unload("ddns")
 
-       -- start dynamic_dns_updater.sh script
-       os.execute ([[/usr/lib/ddns/dynamic_dns_updater.sh %s 0 > /dev/null 2>&1 &]] % section)
+       -- start ddns-updater for section
+       local command = luci_helper .. [[ -S ]] .. section .. [[ -- start]]
+       os.execute(command)
        NX.nanosleep(3) -- 3 seconds "show time"
 
        -- status changed so return full status
index 131cbfd..a8f4cbf 100644 (file)
@@ -58,7 +58,7 @@ end
 
 -- read services/services_ipv6 files -- ########################################
 local services4 = { }          -- IPv4 --
-local fd4 = io.open("/usr/lib/ddns/services", "r")
+local fd4 = io.open("/etc/ddns/services", "r")
 if fd4 then
        local ln, s, t
        repeat
@@ -72,7 +72,7 @@ if fd4 then
 end
 
 local services6 = { }          -- IPv6 --
-local fd6 = io.open("/usr/lib/ddns/services_ipv6", "r")
+local fd6 = io.open("/etc/ddns/services_ipv6", "r")
 if fd6 then
        local ln, s, t
        repeat
@@ -91,35 +91,38 @@ end
 -- local IP can be read
 local function _verify_ip_source()
        -- section is globally defined here be calling agrument (see above)
-       local _network   = "-"
-       local _url       = "-"
-       local _interface = "-"
-       local _script    = "-"
-       local _proxy     = ""
+       local _arg
 
        local _ipv6   = usev6:formvalue(section)
        local _source = (_ipv6 == "1")
                        and src6:formvalue(section)
                        or  src4:formvalue(section)
+
+       local command = CTRL.luci_helper .. [[ -]]
+       if (_ipv6 == "1")  then command = command .. [[6]] end
+
        if _source == "network" then
-               _network = (_ipv6 == "1")
+               _arg = (_ipv6 == "1")
                        and ipn6:formvalue(section)
                        or  ipn4:formvalue(section)
+               command = command .. [[n ]] .. _arg
        elseif _source == "web" then
-               _url = (_ipv6 == "1")
+               _arg = (_ipv6 == "1")
                        and iurl6:formvalue(section)
                        or  iurl4:formvalue(section)
+               command = command .. [[u ]] .. _arg
+
                -- proxy only needed for checking url
-               _proxy = (pxy) and pxy:formvalue(section) or ""
+               _arg = (pxy) and pxy:formvalue(section) or ""
+               if (_arg and #_arg > 0) then
+                       command = command .. [[ -p ]] .. _arg
+               end
        elseif _source == "interface" then
-               _interface = ipi:formvalue(section)
+               command = command .. [[i ]] .. ipi:formvalue(section)
        elseif _source == "script" then
-               _script = ips:formvalue(section)
+               command = command .. [[s ]] .. ips:formvalue(section)
        end
-
-       local command = [[/usr/lib/ddns/dynamic_dns_lucihelper.sh get_local_ip ]] ..
-               _ipv6 .. [[ ]] .. _source .. [[ ]] .. _network .. [[ ]] ..
-               _url .. [[ ]] .. _interface .. [[ ']] .. _script.. [[' ]] .. _proxy
+       command = command .. [[ -- get_local_ip]]
        return (SYS.call(command) == 0)
 end
 
@@ -248,10 +251,8 @@ if m:formvalue("cbid.ddns.%s._switch" % section) then      -- section == arg[1]
 end
 
 -- read application settings -- ################################################
--- date format; if not set use ISO format
-local date_format = m.uci:get(m.config, "global", "date_format") or "%F %R"
 -- log directory
-local log_dir = m.uci:get(m.config, "global", "log_dir") or "/var/log/ddns"
+local logdir = m.uci:get(m.config, "global", "ddns_logdir") or "/var/log/ddns"
 
 -- cbi-section definition -- ###################################################
 local ns = m:section( NamedSection, section, "service",
@@ -1158,8 +1159,11 @@ if DDNS.has_dnsserver or ( ( m:get(section, "dns_server") or "" ) ~= "" ) then
                else
                        local ipv6  = usev6:formvalue(section) or "0"
                        local force = fipv:formvalue(section)  or "0"
-                       local command = [[/usr/lib/ddns/dynamic_dns_lucihelper.sh verify_dns ]] ..
-                               value .. [[ ]] .. ipv6 .. [[ ]] .. force
+                       local command = CTRL.luci_helper .. [[ -]]
+                       if (ipv6 == 1)  then command = command .. [[6]] end
+                       if (force == 1) then command = command .. [[f]] end
+                       command = command .. [[d ]] .. value .. [[ -- verify_dns]]
+
                        local ret = SYS.call(command)
                        if     ret == 0 then return value       -- everything OK
                        elseif ret == 2 then return nil, err_tab_adv(self) .. translate("nslookup can not resolve host")
@@ -1225,8 +1229,10 @@ if DDNS.has_proxy or ( ( m:get(section, "proxy") or "" ) ~= "" ) then
                elseif DDNS.has_proxy then
                        local ipv6  = usev6:formvalue(section) or "0"
                        local force = fipv:formvalue(section) or "0"
-                       local command = [[/usr/lib/ddns/dynamic_dns_lucihelper.sh verify_proxy ]] ..
-                               value .. [[ ]] .. ipv6 .. [[ ]] .. force
+                       local command = CRTL.luci_helper .. [[ -]]
+                       if (ipv6 == 1)  then command = command .. [[6]] end
+                       if (force == 1) then command = command .. [[f]] end
+                       command = command .. [[p ]] .. value .. [[ -- verify_proxy]]
                        local ret = SYS.call(command)
                        if     ret == 0 then return value
                        elseif ret == 2 then return nil, err_tab_adv(self) .. translate("nslookup can not resolve host")
@@ -1262,7 +1268,7 @@ end
 logf = ns:taboption("advanced", Flag, "use_logfile",
        translate("Log to file"),
        translate("Writes detailed messages to log file. File will be truncated automatically.") .. "<br />" ..
-       translate("File") .. [[: "]] .. log_dir .. [[/]] .. section .. [[.log"]] )
+       translate("File") .. [[: "]] .. logdir .. [[/]] .. section .. [[.log"]] )
 logf.orientation = "horizontal"
 logf.default     = "1"         -- if not defined write to log by default
 
@@ -1464,7 +1470,7 @@ lv.template = "ddns/detail_logview"
 lv.inputtitle = translate("Read / Reread log file")
 lv.rows = 50
 function lv.cfgvalue(self, section)
-       local lfile=log_dir .. "/" .. section .. ".log"
+       local lfile=logdir .. "/" .. section .. ".log"
        if NXFS.access(lfile) then
                return lfile .. "\n" .. translate("Please press [Read] button")
        end
index 23ce4f1..9dc0857 100644 (file)
@@ -16,7 +16,8 @@ m.redirect    = DISP.build_url("admin", "services", "ddns")
 
 function m.commit_handler(self)
        if self.changed then    -- changes ?
-               os.execute("/etc/init.d/ddns reload &") -- reload configuration
+               local command = CTRL.luci_helper .. " -- reload"
+               os.execute(command)     -- reload configuration
        end
 end
 
@@ -40,8 +41,8 @@ function ns.cfgvalue(self, section)
        return self.map:get(section)
 end
 
--- allow_local_ip  -- ##########################################################
-local ali      = ns:option(Flag, "allow_local_ip")
+-- upd_privateip  -- ###########################################################
+local ali      = ns:option(Flag, "upd_privateip")
 ali.title      = translate("Allow non-public IP's")
 ali.description = translate("Non-public and by default blocked IP's") .. ":"
                .. [[<br /><strong>IPv4: </strong>]]
@@ -50,8 +51,8 @@ ali.description = translate("Non-public and by default blocked IP's") .. ":"
                .. "::/32, f000::/4"
 ali.default    = "0"
 
--- date_format  -- #############################################################
-local df       = ns:option(Value, "date_format")
+-- ddns_dateformat  -- #########################################################
+local df       = ns:option(Value, "ddns_dateformat")
 df.title       = translate("Date format")
 df.description = [[<a href="http://www.cplusplus.com/reference/ctime/strftime/" target="_blank">]]
                .. translate("For supported codes look here") 
@@ -69,8 +70,8 @@ function df.parse(self, section, novld)
        DDNS.value_parse(self, section, novld)
 end
 
--- run_dir  -- #################################################################
-local rd       = ns:option(Value, "run_dir")
+-- ddns_rundir  -- #############################################################
+local rd       = ns:option(Value, "ddns_rundir")
 rd.title       = translate("Status directory")
 rd.description = translate("Directory contains PID and other status information for each running section")
 rd.default     = "/var/run/ddns"
@@ -79,8 +80,8 @@ function rd.parse(self, section, novld)
        DDNS.value_parse(self, section, novld)
 end
 
--- log_dir  -- #################################################################
-local ld       = ns:option(Value, "log_dir")
+-- ddns_logdir  -- #############################################################
+local ld       = ns:option(Value, "ddns_logdir")
 ld.title       = translate("Log directory")
 ld.description = translate("Directory contains Log files for each running section")
 ld.default     = "/var/log/ddns"
@@ -89,8 +90,8 @@ function ld.parse(self, section, novld)
        DDNS.value_parse(self, section, novld)
 end
 
--- log_lines  -- ###############################################################
-local ll       = ns:option(Value, "log_lines")
+-- ddns_loglines  -- ###########################################################
+local ll       = ns:option(Value, "ddns_loglines")
 ll.title       = translate("Log length")
 ll.description = translate("Number of last lines stored in log files")
 ll.default     = "250"
index 1f5ad68..df39a3a 100644 (file)
@@ -24,7 +24,7 @@ s = m:section( SimpleSection,
        translate("Hints"),
        translate("Below a list of configuration tips for your system to run Dynamic DNS updates without limitations") )
 
--- ddns_scripts needs to be updated for full functionality
+-- ddns-scripts needs to be updated for full functionality
 if not CTRL.service_ok() then
        local so = s:option(DummyValue, "_update_needed")
        so.titleref = DISP.build_url("admin", "system", "packages")
@@ -116,9 +116,9 @@ if not DDNS.has_forceip then
                value = value .. "<br />- " ..
                        translate("You should install 'wget' or 'curl' or 'uclient-fetch' package.")
        end
-       if not (DDNS.has_bindhost or DDNS.has_hostip) then
+       if not DDNS.has_bindhost then
                value = value .. "<br />- " ..
-                       translate("You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' package for DNS requests.")
+                       translate("You should install 'bind-host' or 'knot-host' or 'drill' package for DNS requests.")
        end
        fi.value = value
 end
index 9a989ba..6ba3ea0 100644 (file)
@@ -33,10 +33,13 @@ m.description       = CTRL.app_description()
 
 m.on_after_commit = function(self)
        if self.changed then    -- changes ?
+               local command = CTRL.luci_helper
                if SYS.init.enabled("ddns") then        -- ddns service enabled, restart all
-                       os.execute("/etc/init.d/ddns restart")
+                       command = command .. " -- restart"
+                       os.execute(command)
                else    -- ddns service disabled, send SIGHUP to running
-                       os.execute("killall -1 dynamic_dns_updater.sh")
+                       command = command .. " -- reload"
+                       os.execute(command)
                end
        end
 end
@@ -52,7 +55,7 @@ if show_hints or need_update or not_enabled then
 
        s = m:section( SimpleSection, translate("Hints") )
 
-       -- ddns_scripts needs to be updated for full functionality
+       -- ddns-scripts needs to be updated for full functionality
        if need_update then
                local dv = s:option(DummyValue, "_update_needed")
                dv.titleref = DISP.build_url("admin", "system", "packages")
@@ -119,18 +122,21 @@ function dom.set_one(self, section)
        end
 end
 function dom.set_two(self, section)
-       local lookup = self.map:get(section, "lookup_host") or ""
-       if lookup == "" then return "" end
+       local lookup_host = self.map:get(section, "lookup_host") or ""
+       if lookup_host == "" then return "" end
        local dnsserver = self.map:get(section, "dnsserver") or ""
        local use_ipv6 = tonumber(self.map:get(section, "use_ipv6") or 0)
        local force_ipversion = tonumber(self.map:get(section, "force_ipversion") or 0)
        local force_dnstcp = tonumber(self.map:get(section, "force_dnstcp") or 0)
-       local command = [[/usr/lib/ddns/dynamic_dns_lucihelper.sh]]
-       if not NXFS.access(command, "rwx", "rx", "rx") then
-               NXFS.chmod(command, 755)
-       end
-       command = command .. [[ get_registered_ip ]] .. lookup .. [[ ]] .. use_ipv6 ..
-               [[ ]] .. force_ipversion .. [[ ]] .. force_dnstcp .. [[ ]] .. dnsserver
+       local is_glue = tonumber(self.map:get(section, "is_glue") or 0)
+       local command = CTRL.luci_helper .. [[ -]]
+       if (use_ipv6 == 1) then command = command .. [[6]] end
+       if (force_ipversion == 1) then command = command .. [[f]] end
+       if (force_dnstcp == 1) then command = command .. [[t]] end
+       if (is_glue == 1) then command = command .. [[g]] end
+       command = command .. [[l ]] .. lookup_host
+       if (#dnsserver > 0) then command = command .. [[ -d ]] .. dnsserver end
+       command = command .. [[ -- get_registered_ip]]
        local ip = SYS.exec(command)
        if ip == "" then ip = translate("no data") end
        return ip
index 6b626b9..209d9c3 100755 (executable)
@@ -31,7 +31,7 @@ has_nslookup  = (SYS.call( [[$(which nslookup) localhost 2>&1 | grep -qF "(null)"
 has_ipv6       = (NXFS.access("/proc/net/ipv6_route") and NXFS.access("/usr/sbin/ip6tables"))
 has_ssl                = (has_wgetssl or has_curlssl or (has_fetch and has_fetchssl))
 has_proxy      = (has_wgetssl or has_curlpxy or has_fetch or has_bbwget)
-has_forceip    = ((has_wgetssl or has_curl or has_fetch) and (has_bindhost or has_hostip))
+has_forceip    = (has_wgetssl or has_curl or has_fetch) -- only really needed for transfer
 has_dnsserver  = (has_bindhost or has_hostip or has_nslookup)
 has_bindnet    = (has_wgetssl or has_curl)
 has_cacerts    = _check_certs()
@@ -57,7 +57,7 @@ end
 function epoch2date(epoch, format)
        if not format or #format < 2 then
                local uci = UCI.cursor()
-               format    = uci:get("ddns", "global", "date_format") or "%F %R"
+               format    = uci:get("ddns", "global", "ddns_dateformat") or "%F %R"
                uci:unload("ddns")
        end
        format = format:gsub("%%n", "<br />")   -- replace newline
@@ -67,18 +67,18 @@ end
 
 -- read lastupdate from [section].update file
 function get_lastupd(section)
-       local uci     = UCI.cursor()
-       local run_dir = uci:get("ddns", "global", "run_dir") or "/var/run/ddns"
-       local etime   = tonumber(NXFS.readfile("%s/%s.update" % { run_dir, section } ) or 0 )
+       local uci   = UCI.cursor()
+       local rdir  = uci:get("ddns", "global", "ddns_rundir") or "/var/run/ddns"
+       local etime = tonumber(NXFS.readfile("%s/%s.update" % { rdir, section } ) or 0 )
        uci:unload("ddns")
        return etime
 end
 
 -- read PID from run file and verify if still running
 function get_pid(section)
-       local uci     = UCI.cursor()
-       local run_dir = uci:get("ddns", "global", "run_dir") or "/var/run/ddns"
-       local pid     = tonumber(NXFS.readfile("%s/%s.pid" % { run_dir, section } ) or 0 )
+       local uci  = UCI.cursor()
+       local rdir = uci:get("ddns", "global", "ddns_rundir") or "/var/run/ddns"
+       local pid  = tonumber(NXFS.readfile("%s/%s.pid" % { rdir, section } ) or 0 )
        if pid > 0 and not NX.kill(pid, 0) then
                pid = 0
        end
index 0bcfd44..b69d780 100644 (file)
@@ -14,6 +14,7 @@
        c = c + 1
 %>
        <input class="cbi-input-radio" onclick="cbi_d_update(this.id)" onchange="cbi_d_update(this.id)" type="radio"<%= attr("id", cbid..c) .. attr("name", cbid) .. attr("value", key) .. ifattr((self:cfgvalue(section) or self.default) == key, "checked", "checked") %> />
+       <label<%= attr("for", cbid..c) %>></label>
        <label<%= attr("for", cbid..c) %>><%=self.vallist[i]%></label>
 <% if c == self.size then c = 0 %><% if self.orientation == "horizontal" then %>&#160;<% else %><br /><% end %>
 <% end end %>
index 159cb60..23ec059 100644 (file)
@@ -4,7 +4,7 @@
 <script type="text/javascript">//<![CDATA[
        // event handler on changed date
        function onkeyup_date(value) {
-               var obj = document.getElementById("cbid.ddns.global.date_format.help");
+               var obj = document.getElementById("cbid.ddns.global.ddns_dateformat.help");
                if ( !obj ) { return; } // security check
 
                if ( value == "" || value.length == 0 ) { value = "%F %R"; }
index 64b3dae..2efc125 100644 (file)
@@ -10,6 +10,7 @@
        attr("id", cbid) .. attr("name", cbid) .. attr("value", self.enabled or 1) ..
        ifattr((self:cfgvalue(section) or self.default) == self.enabled, "checked", "checked")
 %> />
+<label<%= attr("for", cbid)%>></label>
 
 <%+cbi/valuefooter%>
 <!-- ++ END ++ Dynamic DNS ++ overview_enabled.htm ++ -->
index 02369b5..69be6ed 100644 (file)
@@ -588,11 +588,6 @@ msgid ""
 msgstr ""
 
 msgid ""
-"You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' package "
-"for DNS requests."
-msgstr ""
-
-msgid ""
 "You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' "
 "package, if you need to specify a DNS server to detect your registered IP."
 msgstr ""
index d41f8c6..2366f62 100644 (file)
@@ -586,11 +586,6 @@ msgid ""
 msgstr ""
 
 msgid ""
-"You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' package "
-"for DNS requests."
-msgstr ""
-
-msgid ""
 "You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' "
 "package, if you need to specify a DNS server to detect your registered IP."
 msgstr ""
index 517fe36..39c1fdc 100644 (file)
@@ -1,8 +1,8 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: luci-app-ddns 2.4.2-1\n"
-"POT-Creation-Date: 2016-05-08 19:10+0200\n"
-"PO-Revision-Date: 2016-05-08 19:12+0200\n"
+"POT-Creation-Date: 2016-09-25 10:43+0200\n"
+"PO-Revision-Date: 2016-09-25 10:43+0200\n"
 "Last-Translator: Christian Schönebeck <christian.schoenebeck@gmail.com>\n"
 "Language-Team: \n"
 "Language: de\n"
@@ -670,13 +670,6 @@ msgstr ""
 "Systemprotokoll geschrieben."
 
 msgid ""
-"You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' package "
-"for DNS requests."
-msgstr ""
-"Sie sollten das Programmpakete 'bind-host' oder 'knot-host' oder 'drill' "
-"oder 'hostip' für DNS Anfragen installieren."
-
-msgid ""
 "You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' "
 "package, if you need to specify a DNS server to detect your registered IP."
 msgstr ""
index a9e3266..fce0cb8 100644 (file)
@@ -585,11 +585,6 @@ msgid ""
 msgstr ""
 
 msgid ""
-"You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' package "
-"for DNS requests."
-msgstr ""
-
-msgid ""
 "You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' "
 "package, if you need to specify a DNS server to detect your registered IP."
 msgstr ""
index d75d2b7..eb5a385 100644 (file)
@@ -584,11 +584,6 @@ msgid ""
 msgstr ""
 
 msgid ""
-"You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' package "
-"for DNS requests."
-msgstr ""
-
-msgid ""
 "You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' "
 "package, if you need to specify a DNS server to detect your registered IP."
 msgstr ""
index 5254489..2004989 100644 (file)
@@ -584,11 +584,6 @@ msgid ""
 msgstr ""
 
 msgid ""
-"You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' package "
-"for DNS requests."
-msgstr ""
-
-msgid ""
 "You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' "
 "package, if you need to specify a DNS server to detect your registered IP."
 msgstr ""
index 55c7b69..f6f2e2b 100644 (file)
@@ -585,11 +585,6 @@ msgid ""
 msgstr ""
 
 msgid ""
-"You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' package "
-"for DNS requests."
-msgstr ""
-
-msgid ""
 "You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' "
 "package, if you need to specify a DNS server to detect your registered IP."
 msgstr ""
index f74365f..1f91fa1 100644 (file)
@@ -584,11 +584,6 @@ msgid ""
 msgstr ""
 
 msgid ""
-"You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' package "
-"for DNS requests."
-msgstr ""
-
-msgid ""
 "You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' "
 "package, if you need to specify a DNS server to detect your registered IP."
 msgstr ""
index 2173c4a..f59d053 100644 (file)
@@ -584,11 +584,6 @@ msgid ""
 msgstr ""
 
 msgid ""
-"You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' package "
-"for DNS requests."
-msgstr ""
-
-msgid ""
 "You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' "
 "package, if you need to specify a DNS server to detect your registered IP."
 msgstr ""
index b69efca..8fe0180 100644 (file)
@@ -584,11 +584,6 @@ msgid ""
 msgstr ""
 
 msgid ""
-"You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' package "
-"for DNS requests."
-msgstr ""
-
-msgid ""
 "You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' "
 "package, if you need to specify a DNS server to detect your registered IP."
 msgstr ""
index be35593..a8efd0f 100644 (file)
@@ -583,11 +583,6 @@ msgid ""
 msgstr ""
 
 msgid ""
-"You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' package "
-"for DNS requests."
-msgstr ""
-
-msgid ""
 "You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' "
 "package, if you need to specify a DNS server to detect your registered IP."
 msgstr ""
index 0f12613..ade7982 100644 (file)
@@ -585,11 +585,6 @@ msgid ""
 msgstr ""
 
 msgid ""
-"You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' package "
-"for DNS requests."
-msgstr ""
-
-msgid ""
 "You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' "
 "package, if you need to specify a DNS server to detect your registered IP."
 msgstr ""
index 218193b..4970846 100644 (file)
@@ -646,13 +646,6 @@ msgstr ""
 "escritos no log do sistema."
 
 msgid ""
-"You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' package "
-"for DNS requests."
-msgstr ""
-"Você deve instalar o pacote 'bind-host' ou 'knot-host' ou 'drill' ou "
-"'hostip' para requisições DNS."
-
-msgid ""
 "You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' "
 "package, if you need to specify a DNS server to detect your registered IP."
 msgstr ""
@@ -807,3 +800,10 @@ msgstr "erro não específico"
 
 msgid "use hostname, FQDN, IPv4- or IPv6-Address"
 msgstr "use hostname, FQDN, endereço IPv4 ou IPv6"
+
+#~ msgid ""
+#~ "You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' "
+#~ "package for DNS requests."
+#~ msgstr ""
+#~ "Você deve instalar o pacote 'bind-host' ou 'knot-host' ou 'drill' ou "
+#~ "'hostip' para requisições DNS."
index be20a34..1a00efb 100644 (file)
@@ -586,11 +586,6 @@ msgid ""
 msgstr ""
 
 msgid ""
-"You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' package "
-"for DNS requests."
-msgstr ""
-
-msgid ""
 "You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' "
 "package, if you need to specify a DNS server to detect your registered IP."
 msgstr ""
index 7741b7d..93424ad 100644 (file)
@@ -585,11 +585,6 @@ msgid ""
 msgstr ""
 
 msgid ""
-"You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' package "
-"for DNS requests."
-msgstr ""
-
-msgid ""
 "You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' "
 "package, if you need to specify a DNS server to detect your registered IP."
 msgstr ""
index 1c4c152..a41d1f4 100644 (file)
@@ -586,11 +586,6 @@ msgid ""
 msgstr ""
 
 msgid ""
-"You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' package "
-"for DNS requests."
-msgstr ""
-
-msgid ""
 "You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' "
 "package, if you need to specify a DNS server to detect your registered IP."
 msgstr ""
index d134ea1..194bf81 100644 (file)
@@ -571,11 +571,6 @@ msgid ""
 msgstr ""
 
 msgid ""
-"You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' package "
-"for DNS requests."
-msgstr ""
-
-msgid ""
 "You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' "
 "package, if you need to specify a DNS server to detect your registered IP."
 msgstr ""
index 3138bf0..be3b1e5 100644 (file)
@@ -582,11 +582,6 @@ msgid ""
 msgstr ""
 
 msgid ""
-"You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' package "
-"for DNS requests."
-msgstr ""
-
-msgid ""
 "You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' "
 "package, if you need to specify a DNS server to detect your registered IP."
 msgstr ""
index b2ad791..33c077e 100644 (file)
@@ -587,11 +587,6 @@ msgid ""
 msgstr ""
 
 msgid ""
-"You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' package "
-"for DNS requests."
-msgstr ""
-
-msgid ""
 "You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' "
 "package, if you need to specify a DNS server to detect your registered IP."
 msgstr ""
index babdbb9..9d9ee07 100644 (file)
@@ -585,11 +585,6 @@ msgid ""
 msgstr ""
 
 msgid ""
-"You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' package "
-"for DNS requests."
-msgstr ""
-
-msgid ""
 "You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' "
 "package, if you need to specify a DNS server to detect your registered IP."
 msgstr ""
index a151999..91bb756 100644 (file)
@@ -595,11 +595,6 @@ msgid ""
 msgstr "把日志写入系统日志.无论是否启用这项,错误信息总是会被写入系统日志"
 
 msgid ""
-"You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' package "
-"for DNS requests."
-msgstr ""
-
-msgid ""
 "You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' "
 "package, if you need to specify a DNS server to detect your registered IP."
 msgstr ""
index 5b608f0..ae0aaba 100644 (file)
@@ -583,11 +583,6 @@ msgid ""
 msgstr ""
 
 msgid ""
-"You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' package "
-"for DNS requests."
-msgstr ""
-
-msgid ""
 "You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' "
 "package, if you need to specify a DNS server to detect your registered IP."
 msgstr ""
index 0424fff..1505b62 100644 (file)
@@ -9,6 +9,10 @@ include $(TOPDIR)/rules.mk
 LUCI_TITLE:=LuCI Diagnostics Tools (Device Info)
 LUCI_DEPENDS:=+luci-app-diag-core +smap +netdiscover +mac-to-devinfo +httping +smap-to-devinfo +netdiscover-to-devinfo @BROKEN
 
+define Package/luci-app-diag-devinfo/conffiles
+/etc/config/luci_devinfo
+endef
+
 include ../../luci.mk
 
 # call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-dynapoint/Makefile b/applications/luci-app-dynapoint/Makefile
new file mode 100644 (file)
index 0000000..d16ef4a
--- /dev/null
@@ -0,0 +1,20 @@
+#
+# Copyright (C) 2016 The LuCI Team <luci@lists.subsignal.org>
+#
+# This is free software, licensed under the GNU General Public License v3.
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=LuCI Support for DynaPoint
+LUCI_DEPENDS:=+dynapoint
+
+PKG_NAME:=luci-app-dynapoint
+PKG_VERSION:=1.0
+PKG_RELEASE:=1
+PKG_LICENSE:=GPL-3.0+
+PKG_MAINTAINER:=Tobias Ilte <tobias.ilte@campus.tu-berlin.de>
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
+
diff --git a/applications/luci-app-dynapoint/luasrc/controller/dynapoint.lua b/applications/luci-app-dynapoint/luasrc/controller/dynapoint.lua
new file mode 100644 (file)
index 0000000..6534863
--- /dev/null
@@ -0,0 +1,9 @@
+module("luci.controller.dynapoint", package.seeall)
+
+function index()
+   if not nixio.fs.access("/etc/config/dynapoint") then
+      return
+   end
+   entry({"admin", "services", "dynapoint"}, cbi("dynapoint"), _("DynaPoint"))
+end
+
diff --git a/applications/luci-app-dynapoint/luasrc/model/cbi/dynapoint.lua b/applications/luci-app-dynapoint/luasrc/model/cbi/dynapoint.lua
new file mode 100644 (file)
index 0000000..e6871a5
--- /dev/null
@@ -0,0 +1,99 @@
+local uci = require "luci.model.uci".cursor()
+local a = require "luci.model.ipkg"
+local DISP = require "luci.dispatcher"
+
+local wlcursor = luci.model.uci.cursor_state()
+local wireless = wlcursor:get_all("wireless")
+local ifaces = {}
+
+for k, v in pairs(wireless) do
+  if v[".type"] == "wifi-iface" then
+    table.insert(ifaces, v)
+  end
+end
+
+m = Map("dynapoint")
+m:chain("wireless")
+
+s = m:section(NamedSection, "internet", "rule", translate("Configuration"), translate("Check Internet connectivity via HTTP header download"))
+
+hosts = s:option(DynamicList, "hosts", translate("List of host addresses"), translate("List of host addresses (url or IP) to track and request http headers from"))
+hosts.datatype = "string"
+
+interval = s:option(Value, "interval", translate("Test-run interval"), translate("Time interval in seconds to re-start a new test run"))
+interval.datatype = "uinteger"
+interval.default = "30"
+
+offline_treshold = s:option(Value, "offline_threshold", translate("Switch_to_offline threshold"), translate("Failure counter after how many failed download attempts, the state is considered as offline"))
+offline_treshold.datatype = "uinteger"
+offline_treshold.default = "1"
+
+add_hostname_to_ssid = s:option(Flag, "add_hostname_to_ssid", translate("Append hostname to ssid"), translate("Append the router's hostname to the SSID when connectivity check fails"))
+add_hostname_to_ssid.rmempty = false
+
+
+if (a.installed("curl") == true) then
+  use_curl = s:option(Flag, "use_curl", translate("Use curl"), translate("Use curl instead of wget for testing the connectivity."))
+  use_curl.rmempty = false
+
+  curl_interface = s:option(Value, "curl_interface", translate("Used interface"), translate("Which interface should curl use. (Use ifconfig to find out)"))
+  curl_interface.datatype = "string"
+  curl_interface:depends("use_curl","1")
+  curl_interface.placeholder = "eth0"
+else
+  use_curl = s:option(Flag, "use_curl", translate("Use curl instead of wget"), translate("Curl is currently not installed.")
+  .." Please install the package in the "
+  ..[[<a href="]] .. DISP.build_url("admin", "system", "packages")
+  .. "?display=available&query=curl"..[[">]]
+  .. "Software Section" .. [[</a>]]
+  .. "."
+  )
+  use_curl.rmempty = false
+  use_curl.template = "dynapoint/cbi_checkbox"
+end
+
+m1 = Map("wireless", "DynaPoint", translate("Dynamic Access Point Manager"))
+
+aps = m1:section(TypedSection, "wifi-iface", translate("List of Wireless Virtual Interfaces (wVIF)"))
+aps.addremove = false
+aps.anonymous = true
+aps.template  = "cbi/tblsection"
+
+status = aps:option(DummyValue, "disabled", translate("WiFi Status"))
+status.template = "dynapoint/cbi_color"
+
+function status.cfgvalue(self,section)
+  local val = m1:get(section, "disabled")
+  if val == "1" then return translate("Disabled") end
+  if (val == nil or val == "0") then return translate("Enabled") end
+  return val
+end
+
+device = aps:option(DummyValue, "device", translate("Device"))
+function device.cfgvalue(self,section)
+  local dev = m1:get(section, "device")
+  local val = m1:get(dev, "hwmode")
+  if val == "11a" then return dev .. " (5 GHz)"  else
+  return dev .. " (2,4 GHz)"
+  end
+  return val
+end
+
+
+
+
+
+mode = aps:option(DummyValue, "mode", translate("Mode"))
+
+ssid = aps:option(DummyValue, "ssid", translate("SSID"))
+
+
+action = aps:option(ListValue, "dynapoint_rule", translate("Activate this wVIF if status is:"))
+action.widget="select"
+action:value("internet",translate("Online"))
+action:value("!internet",translate("Offline"))
+action:value("",translate("Not used by DynaPoint"))
+action.default = ""
+
+return m1,m
+
diff --git a/applications/luci-app-dynapoint/luasrc/view/dynapoint/cbi_checkbox.htm b/applications/luci-app-dynapoint/luasrc/view/dynapoint/cbi_checkbox.htm
new file mode 100644 (file)
index 0000000..5f8bcd5
--- /dev/null
@@ -0,0 +1,6 @@
+<%+cbi/valueheader%>
+
+<input class="cbi-input-checkbox" disabled data-update="click change" type="checkbox" id="cbid.dynapoint.internet.use_curl" name="cbid.dynapoint.internet.use_curl" value="1" />
+
+
+<%+cbi/valuefooter%>
diff --git a/applications/luci-app-dynapoint/luasrc/view/dynapoint/cbi_color.htm b/applications/luci-app-dynapoint/luasrc/view/dynapoint/cbi_color.htm
new file mode 100644 (file)
index 0000000..bfc710e
--- /dev/null
@@ -0,0 +1,18 @@
+<%+cbi/valueheader%>
+
+
+<%
+if (self:cfgvalue(section) == translate("Disabled")) then
+%>
+
+<span id="<%=cbid%>.disabled" style="background-color:red;"><%=self:cfgvalue(section)%></span>
+
+<%
+else 
+%>
+<span id="<%=cbid%>.disabled" style="background-color:lime;"><%=self:cfgvalue(section)%></span>
+<%
+end
+%>
+
+<%+cbi/valuefooter%>
diff --git a/applications/luci-app-dynapoint/po/de/dynapoint.po b/applications/luci-app-dynapoint/po/de/dynapoint.po
new file mode 100644 (file)
index 0000000..e2507e4
--- /dev/null
@@ -0,0 +1,106 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2016-08-31 15:51+0200\n"
+"Language-Team: German\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "Activate this wVIF if status is:"
+msgstr "Aktiviere diese drahtlose Schnittstelle wenn:"
+
+msgid "Append hostname to ssid"
+msgstr "Anfügen des hostname zur SSID"
+
+msgid "Append the router's hostname to the SSID when connectivity check fails"
+msgstr ""
+"Fügt den hostname des routers zur SSID an, wenn die Verbindungsüberprüfung "
+"fehl schlägt"
+
+msgid "Check Internet connectivity via HTTP header download"
+msgstr "Testen der Internetverfügbarkeit via HTTP header download"
+
+msgid "Configuration"
+msgstr "Konfiguration"
+
+msgid "Curl is currently not installed."
+msgstr "Curl ist momentan nicht installiert."
+
+msgid "Device"
+msgstr "Gerät"
+
+msgid "Disabled"
+msgstr "Deaktiviert"
+
+msgid "DynaPoint"
+msgstr ""
+
+msgid "Dynamic Access Point Manager"
+msgstr ""
+
+msgid "Enabled"
+msgstr "Aktiviert"
+
+msgid ""
+"Failure counter after how many failed download attempts, the state is "
+"considered as offline"
+msgstr ""
+"Anzahl der fehlgeschlagenen Downloadversuche, nach denen die Verbindung als offline angesehen wird"
+
+msgid "List of Wireless Virtual Interfaces (wVIF)"
+msgstr "Liste der Drahtlosen virtuellen Schnittstellen"
+
+msgid "List of host addresses"
+msgstr "Liste der Zieladressen"
+
+msgid ""
+"List of host addresses (url or IP) to track and request http headers from"
+msgstr "Liste der Zieladressen (URL oder IP) für den HTTP header download"
+
+msgid "Mode"
+msgstr "Modus"
+
+msgid "Not used by DynaPoint"
+msgstr "Nicht von DynaPoint benutzt"
+
+msgid "Offline"
+msgstr "Offline"
+
+msgid "Online"
+msgstr "Online"
+
+msgid "SSID"
+msgstr ""
+
+msgid "Switch_to_offline threshold"
+msgstr "Offline-Schwelle"
+
+msgid "Test-run interval"
+msgstr "Testlaufintervall"
+
+msgid "Time interval in seconds to re-start a new test run"
+msgstr "Zeitintervall in Sekunden für einen Testlauf"
+
+msgid "Use curl"
+msgstr "Curl benutzen"
+
+msgid "Use curl instead of wget"
+msgstr "Curl anstatt wget benutzen"
+
+msgid "Use curl instead of wget for testing the connectivity."
+msgstr "Curl anstatt wget benutzen, um die Internetverbindung zu überprüfen."
+
+msgid "Used interface"
+msgstr "Benutztes interface"
+
+msgid "Which interface should curl use. (Use ifconfig to find out)"
+msgstr ""
+"Welches Interface von curl benutzt werden soll. (ifconfig benutzen, um das "
+"herauszufinden"
+
+msgid "WiFi Status"
+msgstr ""
+
diff --git a/applications/luci-app-dynapoint/po/ja/dynapoint.po b/applications/luci-app-dynapoint/po/ja/dynapoint.po
new file mode 100644 (file)
index 0000000..7503198
--- /dev/null
@@ -0,0 +1,108 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.11\n"
+"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language: ja\n"
+
+msgid "Activate this wVIF if status is:"
+msgstr "wVIFを有効化する接続ステータス:"
+
+msgid "Append hostname to ssid"
+msgstr "ホスト名をSSIDに追加する"
+
+msgid "Append the router's hostname to the SSID when connectivity check fails"
+msgstr "接続性のチェックが失敗した場合、ルーターのホスト名をSSIDに追加します。"
+
+msgid "Check Internet connectivity via HTTP header download"
+msgstr ""
+"HTTP ヘッダーのダウンロードを通して、インターネットの接続性をチェックします。"
+
+msgid "Configuration"
+msgstr "設定"
+
+msgid "Curl is currently not installed."
+msgstr "curl は現在インストールされていません。"
+
+msgid "Device"
+msgstr "デバイス"
+
+msgid "Disabled"
+msgstr "無効"
+
+msgid "DynaPoint"
+msgstr "DynaPoint"
+
+msgid "Dynamic Access Point Manager"
+msgstr "ダイナミック アクセスポイント マネージャー"
+
+msgid "Enabled"
+msgstr "有効"
+
+msgid ""
+"Failure counter after how many failed download attempts, the state is "
+"considered as offline"
+msgstr "状態をオフラインと見なすまでの、ダウンロード試行の失敗回数です。"
+
+msgid "List of Wireless Virtual Interfaces (wVIF)"
+msgstr "無線仮想インターフェース (wVIF) のリスト"
+
+msgid "List of host addresses"
+msgstr "ホストアドレスのリスト"
+
+msgid ""
+"List of host addresses (url or IP) to track and request http headers from"
+msgstr ""
+"HTTP ヘッダーの追跡およびリクエストを行う、ホスト アドレス(URLまたはIP)のリ"
+"ストです。"
+
+msgid "Mode"
+msgstr "モード"
+
+msgid "Not used by DynaPoint"
+msgstr "DynaPointで使用しない"
+
+msgid "Offline"
+msgstr "オフライン"
+
+msgid "Online"
+msgstr "オンライン"
+
+msgid "SSID"
+msgstr "SSID"
+
+msgid "Switch_to_offline threshold"
+msgstr "オフライン化閾値"
+
+msgid "Test-run interval"
+msgstr "テスト実行間隔"
+
+msgid "Time interval in seconds to re-start a new test run"
+msgstr "接続性テストを再実行するまでの時間間隔(秒)です。"
+
+msgid "Use curl"
+msgstr "curl を使用する"
+
+msgid "Use curl instead of wget"
+msgstr "wget の代わりに curl を使用する"
+
+msgid "Use curl instead of wget for testing the connectivity."
+msgstr "接続性のテストの際、wget の代わりに curl を使用します。"
+
+msgid "Used interface"
+msgstr "使用するインターフェース"
+
+msgid "Which interface should curl use. (Use ifconfig to find out)"
+msgstr ""
+"curl が使用するインターフェースです。ifconfigを使用してインターフェース名を確"
+"認します。"
+
+msgid "WiFi Status"
+msgstr "無線ステータス"
diff --git a/applications/luci-app-dynapoint/po/templates/dynapoint.pot b/applications/luci-app-dynapoint/po/templates/dynapoint.pot
new file mode 100644 (file)
index 0000000..f352425
--- /dev/null
@@ -0,0 +1,92 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid "Activate this wVIF if status is:"
+msgstr ""
+
+msgid "Append hostname to ssid"
+msgstr ""
+
+msgid "Append the router's hostname to the SSID when connectivity check fails"
+msgstr ""
+
+msgid "Check Internet connectivity via HTTP header download"
+msgstr ""
+
+msgid "Configuration"
+msgstr ""
+
+msgid "Curl is currently not installed."
+msgstr ""
+
+msgid "Device"
+msgstr ""
+
+msgid "Disabled"
+msgstr ""
+
+msgid "DynaPoint"
+msgstr ""
+
+msgid "Dynamic Access Point Manager"
+msgstr ""
+
+msgid "Enabled"
+msgstr ""
+
+msgid ""
+"Failure counter after how many failed download attempts, the state is "
+"considered as offline"
+msgstr ""
+
+msgid "List of Wireless Virtual Interfaces (wVIF)"
+msgstr ""
+
+msgid "List of host addresses"
+msgstr ""
+
+msgid ""
+"List of host addresses (url or IP) to track and request http headers from"
+msgstr ""
+
+msgid "Mode"
+msgstr ""
+
+msgid "Not used by DynaPoint"
+msgstr ""
+
+msgid "Offline"
+msgstr ""
+
+msgid "Online"
+msgstr ""
+
+msgid "SSID"
+msgstr ""
+
+msgid "Switch_to_offline threshold"
+msgstr ""
+
+msgid "Test-run interval"
+msgstr ""
+
+msgid "Time interval in seconds to re-start a new test run"
+msgstr ""
+
+msgid "Use curl"
+msgstr ""
+
+msgid "Use curl instead of wget"
+msgstr ""
+
+msgid "Use curl instead of wget for testing the connectivity."
+msgstr ""
+
+msgid "Used interface"
+msgstr ""
+
+msgid "Which interface should curl use. (Use ifconfig to find out)"
+msgstr ""
+
+msgid "WiFi Status"
+msgstr ""
diff --git a/applications/luci-app-dynapoint/root/etc/uci-defaults/40_luci-dynapoint b/applications/luci-app-dynapoint/root/etc/uci-defaults/40_luci-dynapoint
new file mode 100644 (file)
index 0000000..7287ccd
--- /dev/null
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+# needed for "Save and Apply" to restart dynapoint
+uci -q batch <<-EOF >/dev/null
+       delete ucitrack.@dynapoint[-1]
+       add ucitrack dynapoint
+       set ucitrack.@dynapoint[-1].init="dynapoint"
+       commit dynapoint
+EOF
+
+rm -f /tmp/luci-indexcache
+exit 0
+
index 968ac36..2b3cee3 100644 (file)
@@ -22,6 +22,10 @@ end
 function o.write(self, section, value)
        value = value:gsub("\r\n?", "\n")
        fs.writefile("/etc/firewall.user", value)
+       require("luci.sys").call("/etc/init.d/firewall restart >/dev/null 2<&1")
+       require("nixio").syslog('info', 'Restarting firewall on custom /etc/firewall.user change')
 end
 
+f.submit = translate("Restart Firewall")
+
 return f
index 22f1c77..17a4948 100644 (file)
@@ -73,7 +73,7 @@ o = s:option(Value, "src_ip",
        translate("Source IP address"),
        translate("Only match incoming traffic from this IP or range."))
 o.rmempty = true
-o.datatype = "neg(ip4addr)"
+o.datatype = "neg(ipmask4)"
 o.placeholder = translate("any")
 
 luci.sys.net.ipv4_hints(function(ip, name)
@@ -99,7 +99,7 @@ end)
 
 
 o.rmempty = true
-o.datatype = "neg(ip4addr)"
+o.datatype = "neg(ipmask4)"
 o.placeholder = translate("any")
 
 
@@ -119,7 +119,7 @@ o.template = "cbi/firewall_zonelist"
 o = s:option(Value, "dest_ip", translate("Internal IP address"),
        translate("Redirect matched incoming traffic to the specified \
                internal host"))
-o.datatype = "ip4addr"
+o.datatype = "ipmask4"
 
 luci.sys.net.ipv4_hints(function(ip, name)
        o:value(ip, "%s (%s)" %{ ip, name })
index 97e93ae..1c83888 100644 (file)
@@ -99,7 +99,7 @@ elseif rule_type == "redirect" then
 
        o = s:option(Value, "src_ip", translate("Source IP address"))
        o.rmempty = true
-       o.datatype = "neg(ipaddr)"
+       o.datatype = "neg(ipmask4)"
        o.placeholder = translate("any")
 
        luci.sys.net.ipv4_hints(function(ip, name)
@@ -123,7 +123,7 @@ elseif rule_type == "redirect" then
 
 
        o = s:option(Value, "dest_ip", translate("Destination IP address"))
-       o.datatype = "neg(ip4addr)"
+       o.datatype = "neg(ipmask4)"
 
        luci.sys.net.ipv4_hints(function(ip, name)
                o:value(ip, "%s (%s)" %{ ip, name })
@@ -269,7 +269,7 @@ else
 
 
        o = s:option(Value, "src_ip", translate("Source address"))
-       o.datatype = "neg(ipaddr)"
+       o.datatype = "neg(ipmask)"
        o.placeholder = translate("any")
 
        luci.sys.net.ipv4_hints(function(ip, name)
@@ -290,7 +290,7 @@ else
 
 
        o = s:option(Value, "dest_ip", translate("Destination address"))
-       o.datatype = "neg(ipaddr)"
+       o.datatype = "neg(ipmask)"
        o.placeholder = translate("any")
 
        luci.sys.net.ipv4_hints(function(ip, name)
index c8b8f22..500d1bf 100644 (file)
@@ -126,7 +126,7 @@ msrc = s:taboption("advanced", DynamicList, "masq_src",
        translate("Restrict Masquerading to given source subnets"))
 
 msrc.optional = true
-msrc.datatype = "list(neg(or(uciname,hostname,ip4addr)))"
+msrc.datatype = "list(neg(or(uciname,hostname,ipmask4)))"
 msrc.placeholder = "0.0.0.0/0"
 msrc:depends("family", "")
 msrc:depends("family", "ipv4")
@@ -135,7 +135,7 @@ mdest = s:taboption("advanced", DynamicList, "masq_dest",
        translate("Restrict Masquerading to given destination subnets"))
 
 mdest.optional = true
-mdest.datatype = "list(neg(or(uciname,hostname,ip4addr)))"
+mdest.datatype = "list(neg(or(uciname,hostname,ipmask4)))"
 mdest.placeholder = "0.0.0.0/0"
 mdest:depends("family", "")
 mdest:depends("family", "ipv4")
index 5d62f02..913fb75 100644 (file)
@@ -295,6 +295,9 @@ msgstr "Redirigeix trànsit entrant coincidit al port donat en el host intern"
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr "Redirigeix trànsit entrant coincidit al host intern especificat"
 
+msgid "Restart Firewall"
+msgstr ""
+
 msgid "Restrict Masquerading to given destination subnets"
 msgstr "Restringeix la mascarada a les subxarxes de destí donades"
 
index 2d4b251..1ab1360 100644 (file)
@@ -292,6 +292,9 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr "Přesměrovat vybraný příchozí provoz na uvedeného vnitřního hostitele."
 
+msgid "Restart Firewall"
+msgstr ""
+
 msgid "Restrict Masquerading to given destination subnets"
 msgstr "Omezit maškarádování na uvedené cílové podsítě"
 
index c9237d7..448f951 100644 (file)
@@ -292,6 +292,9 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr "Gefilterte Verbindungen an den angegeben internen Host weiterleiten"
 
+msgid "Restart Firewall"
+msgstr ""
+
 msgid "Restrict Masquerading to given destination subnets"
 msgstr "NAT auf die angegebenen Ziel-Subnetze beschränken"
 
index f54e3d6..2229bf0 100644 (file)
@@ -285,6 +285,9 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr ""
 
+msgid "Restart Firewall"
+msgstr ""
+
 msgid "Restrict Masquerading to given destination subnets"
 msgstr ""
 
index 6e3b9eb..9dc277d 100644 (file)
@@ -285,6 +285,9 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr "Redirect matched incoming traffic to the specified internal host"
 
+msgid "Restart Firewall"
+msgstr ""
+
 msgid "Restrict Masquerading to given destination subnets"
 msgstr ""
 
index 4a3e182..670b4db 100644 (file)
@@ -294,6 +294,9 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr "Redirigir el tráfico de entrada que coincida a la máquina interna"
 
+msgid "Restart Firewall"
+msgstr ""
+
 msgid "Restrict Masquerading to given destination subnets"
 msgstr "Restringir enmascaramiento a las subredes destino"
 
index 6d3111a..cdff282 100644 (file)
@@ -290,6 +290,9 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr "Rediriger le trafic entrant correspondant vers l'hôte interne spécifié"
 
+msgid "Restart Firewall"
+msgstr ""
+
 msgid "Restrict Masquerading to given destination subnets"
 msgstr ""
 "Restreindre la substitution d'adresses (Masquerade) à ces sous-réseaux "
index 54316ad..ce0ad04 100644 (file)
@@ -275,6 +275,9 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr ""
 
+msgid "Restart Firewall"
+msgstr ""
+
 msgid "Restrict Masquerading to given destination subnets"
 msgstr ""
 
index 78c4b26..c201e3d 100644 (file)
@@ -296,6 +296,9 @@ msgstr "Átirányítja az egyező bejövő forgalmat a belső gép megadott port
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr "Átirányítja az egyező bejövő forgalmat a megadott belső géphez"
 
+msgid "Restart Firewall"
+msgstr ""
+
 msgid "Restrict Masquerading to given destination subnets"
 msgstr "Álcázás korlátozása a megadott cél alhálózatokra"
 
index 064f63d..8853524 100644 (file)
@@ -272,8 +272,10 @@ msgstr ""
 msgid ""
 "Port forwarding allows remote computers on the Internet to connect to a "
 "specific computer or service within the private LAN."
-msgstr "L'inoltro delle porte permette ai computer in remoto su Internet di" 
-"connettersi a uno specifico computer o servizio presente nella tua LAN privata"
+msgstr ""
+"L'inoltro delle porte permette ai computer in remoto su Internet "
+"diconnettersi a uno specifico computer o servizio presente nella tua LAN "
+"privata"
 
 msgid "Protocol"
 msgstr "Protocollo"
@@ -285,6 +287,9 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr ""
 
+msgid "Restart Firewall"
+msgstr ""
+
 msgid "Restrict Masquerading to given destination subnets"
 msgstr ""
 
@@ -380,8 +385,9 @@ msgstr ""
 msgid ""
 "The firewall creates zones over your network interfaces to control network "
 "traffic flow."
-msgstr "Il firewall crea delle zone nelle tue interfacce di rete per controllare" 
-"il flusso del traffico."
+msgstr ""
+"Il firewall crea delle zone nelle tue interfacce di rete per controllareil "
+"flusso del traffico."
 
 msgid ""
 "The options below control the forwarding policies between this zone (%s) and "
index 4e88189..0e8d71c 100644 (file)
@@ -1,26 +1,26 @@
 msgid ""
 msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2010-03-30 17:00+0200\n"
-"PO-Revision-Date: 2012-11-14 17:32+0200\n"
-"Last-Translator: Kentaro <kentaro.matsuyama@gmail.com>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"PO-Revision-Date: 2016-12-24 02:55+0900\n"
+"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\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: Pootle 2.0.6\n"
+"X-Generator: Poedit 1.8.11\n"
+"Language-Team: \n"
 
 msgid "%s in %s"
-msgstr ""
+msgstr "%s (%s)"
 
 msgid "%s%s with %s"
 msgstr "%s%s ,%s"
 
 msgid "%s, %s in %s"
-msgstr ""
+msgstr "%s, %s (%s)"
 
 msgid "(Unnamed Entry)"
 msgstr "(名前設定の無いエントリー)"
@@ -142,10 +142,10 @@ msgid "Forward"
 msgstr "転送"
 
 msgid "Forward to"
-msgstr ""
+msgstr "転送先"
 
 msgid "Friday"
-msgstr ""
+msgstr "金曜日"
 
 msgid "From %s in %s"
 msgstr "送信元 %s (%s)"
@@ -199,7 +199,7 @@ msgid "Masquerading"
 msgstr "マスカレード"
 
 msgid "Match"
-msgstr ""
+msgstr "対象"
 
 msgid "Match ICMP type"
 msgstr "ICMPタイプの一致"
@@ -224,10 +224,10 @@ msgstr ""
 "フィックと一致したトラフィックが対象になります。"
 
 msgid "Monday"
-msgstr ""
+msgstr "月曜日"
 
 msgid "Month Days"
-msgstr ""
+msgstr "月間"
 
 msgid "Name"
 msgstr "名前"
@@ -301,6 +301,9 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr "ルールに一致した受信トラフィックを、設定された内部ホストへ転送します"
 
+msgid "Restart Firewall"
+msgstr "ファイアウォールの再起動"
+
 msgid "Restrict Masquerading to given destination subnets"
 msgstr "設定された宛先サブネットへのマスカレードを制限する"
 
@@ -334,7 +337,7 @@ msgid "SNAT port"
 msgstr "SNAT ポート"
 
 msgid "Saturday"
-msgstr ""
+msgstr "土曜日"
 
 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
 # Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/rrule.lua      #
@@ -394,19 +397,19 @@ msgid "Source zone"
 msgstr "送信元ゾーン"
 
 msgid "Start Date (yyyy-mm-dd)"
-msgstr ""
+msgstr "開始日 (yyyy-mm-dd)"
 
 msgid "Start Time (hh:mm:ss)"
-msgstr ""
+msgstr "開始時刻 (hh:mm:ss)"
 
 msgid "Stop Date (yyyy-mm-dd)"
-msgstr ""
+msgstr "停止日 (yyyy-mm-dd)"
 
 msgid "Stop Time (hh:mm:ss)"
-msgstr ""
+msgstr "停止時刻 (hh:mm:ss)"
 
 msgid "Sunday"
-msgstr ""
+msgstr "日曜日"
 
 msgid ""
 "The firewall creates zones over your network interfaces to control network "
@@ -444,7 +447,6 @@ msgstr ""
 "このページでは、各トラフィックルールの送信元・宛先ホストの設定などの詳細設定"
 "を行うことができます。"
 
-#, fuzzy
 msgid ""
 "This section defines common properties of %q. The <em>input</em> and "
 "<em>output</em> options set the default policies for traffic entering and "
@@ -459,10 +461,10 @@ msgstr ""
 "のゾーンに属するかを設定します。"
 
 msgid "Thursday"
-msgstr ""
+msgstr "木曜日"
 
 msgid "Time in UTC"
-msgstr ""
+msgstr "UTC時刻を使用"
 
 msgid "To %s at %s on <var>this device</var>"
 msgstr "宛先 %s, %s (<var>デバイス</var>)"
@@ -495,19 +497,19 @@ msgstr ""
 "設定することができます。"
 
 msgid "Tuesday"
-msgstr ""
+msgstr "火曜日"
 
 msgid "Via %s"
-msgstr ""
+msgstr "経由 %s"
 
 msgid "Via %s at %s"
-msgstr ""
+msgstr "経由 %s , %s"
 
 msgid "Wednesday"
-msgstr ""
+msgstr "水曜日"
 
 msgid "Week Days"
-msgstr ""
+msgstr "曜日"
 
 msgid ""
 "You may specify multiple by selecting \"-- custom --\" and then entering "
@@ -550,4 +552,4 @@ msgid "reject"
 msgstr "拒否"
 
 msgid "traffic"
-msgstr ""
+msgstr "トラフィック"
diff --git a/applications/luci-app-firewall/po/ko/firewall.po b/applications/luci-app-firewall/po/ko/firewall.po
new file mode 100644 (file)
index 0000000..f43fdc8
--- /dev/null
@@ -0,0 +1,505 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-03-30 17:00+0200\n"
+"PO-Revision-Date: 2012-11-14 17:32+0200\n"
+"Last-Translator: Weongyo Jeong <weongyo@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\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: Pootle 2.0.6\n"
+
+msgid "%s in %s"
+msgstr ""
+
+msgid "%s%s with %s"
+msgstr "%s%s ,%s"
+
+msgid "%s, %s in %s"
+msgstr ""
+
+msgid "(Unnamed Entry)"
+msgstr ""
+
+msgid "(Unnamed Rule)"
+msgstr ""
+
+msgid "(Unnamed SNAT)"
+msgstr ""
+
+msgid "<var>%d</var> pkts. per <var>%s</var>"
+msgstr ""
+
+msgid "<var>%d</var> pkts. per <var>%s</var>, burst <var>%d</var> pkts."
+msgstr ""
+
+msgid "<var>%s</var> and limit to %s"
+msgstr ""
+
+msgid "Action"
+msgstr ""
+
+msgid "Add"
+msgstr ""
+
+msgid "Add and edit..."
+msgstr "추가 후 수정..."
+
+msgid "Advanced Settings"
+msgstr ""
+
+msgid "Allow forward from <em>source zones</em>:"
+msgstr "<em>Source zone</em> 로부터의 forward 허용:"
+
+msgid "Allow forward to <em>destination zones</em>:"
+msgstr "<em>Destination zone</em> 으로 forward 허용:"
+
+msgid "Any"
+msgstr ""
+
+msgid "Covered networks"
+msgstr ""
+
+msgid "Custom Rules"
+msgstr "Custom Rule"
+
+msgid ""
+"Custom rules allow you to execute arbritary iptables commands which are not "
+"otherwise covered by the firewall framework. The commands are executed after "
+"each firewall restart, right after the default ruleset has been loaded."
+msgstr ""
+"Custom rule 은 방화벽 UI 로 해결이 되지 않는 임의의 iptables 명령을 실행할 "
+"수 있도록 합니다.  입력된 명령어들은 매 방화벽 재시작시 실행되는데 default "
+"ruleset 이 load 된 후 시점입니다."
+
+msgid "Destination IP address"
+msgstr "Destination IP 주소"
+
+msgid "Destination address"
+msgstr "Destination 주소"
+
+msgid "Destination port"
+msgstr ""
+
+msgid "Destination zone"
+msgstr ""
+
+msgid "Do not rewrite"
+msgstr ""
+
+msgid "Drop invalid packets"
+msgstr ""
+
+msgid "Enable"
+msgstr "활성화"
+
+msgid "Enable NAT Loopback"
+msgstr "NAT Loopback 활성화"
+
+msgid "Enable SYN-flood protection"
+msgstr "SYN-flood protection 활성화"
+
+msgid "Enable logging on this zone"
+msgstr "zone 의 logging 활성화"
+
+msgid "External IP address"
+msgstr "외부 IP 주소"
+
+msgid "External port"
+msgstr "외부 port"
+
+msgid "External zone"
+msgstr "외부 zone"
+
+msgid "Extra arguments"
+msgstr "추가 argument"
+
+msgid "Firewall"
+msgstr "방화벽"
+
+msgid "Firewall - Custom Rules"
+msgstr "방화벽 - Custom Rules"
+
+msgid "Firewall - Port Forwards"
+msgstr "방화벽 - Port Forwards"
+
+msgid "Firewall - Traffic Rules"
+msgstr "방화벽 - Traffic Rules"
+
+msgid "Firewall - Zone Settings"
+msgstr "방화벽 - Zone 설정"
+
+msgid "Force connection tracking"
+msgstr ""
+
+msgid "Forward"
+msgstr ""
+
+msgid "Forward to"
+msgstr ""
+
+msgid "Friday"
+msgstr "금요일"
+
+msgid "From %s in %s"
+msgstr ""
+
+msgid "From %s in %s with source %s"
+msgstr ""
+
+msgid "From %s in %s with source %s and %s"
+msgstr ""
+
+msgid "General Settings"
+msgstr ""
+
+msgid "IPv4"
+msgstr ""
+
+msgid "IPv4 and IPv6"
+msgstr ""
+
+msgid "IPv4 only"
+msgstr ""
+
+msgid "IPv6"
+msgstr ""
+
+msgid "IPv6 only"
+msgstr ""
+
+msgid "Input"
+msgstr ""
+
+msgid "Inter-Zone Forwarding"
+msgstr ""
+
+msgid "Internal IP address"
+msgstr "내부 IP 주소"
+
+msgid "Internal port"
+msgstr "내부 port"
+
+msgid "Internal zone"
+msgstr "내부 zone"
+
+msgid "Limit log messages"
+msgstr ""
+
+msgid "MSS clamping"
+msgstr ""
+
+msgid "Masquerading"
+msgstr ""
+
+msgid "Match"
+msgstr ""
+
+msgid "Match ICMP type"
+msgstr ""
+
+msgid "Match forwarded traffic to the given destination port or port range."
+msgstr ""
+
+msgid ""
+"Match incoming traffic directed at the given destination port or port range "
+"on this host"
+msgstr ""
+
+msgid ""
+"Match incoming traffic originating from the given source port or port range "
+"on the client host."
+msgstr ""
+
+msgid "Monday"
+msgstr "월요일"
+
+msgid "Month Days"
+msgstr ""
+
+msgid "Name"
+msgstr "이름"
+
+msgid "New SNAT rule"
+msgstr "새로운 SNAT rule"
+
+msgid "New forward rule"
+msgstr "새로운 forward rule"
+
+msgid "New input rule"
+msgstr "새로운 input rule"
+
+msgid "New port forward"
+msgstr "새로운 port forward"
+
+msgid "New source NAT"
+msgstr "새로운 source NAT"
+
+msgid "Only match incoming traffic directed at the given IP address."
+msgstr ""
+
+msgid "Only match incoming traffic from these MACs."
+msgstr ""
+
+msgid "Only match incoming traffic from this IP or range."
+msgstr ""
+
+msgid ""
+"Only match incoming traffic originating from the given source port or port "
+"range on the client host"
+msgstr ""
+
+msgid "Open ports on router"
+msgstr ""
+
+msgid "Other..."
+msgstr ""
+
+msgid "Output"
+msgstr ""
+
+msgid "Passes additional arguments to iptables. Use with care!"
+msgstr "iptables 명령에 추가 인자들을 더합니다.  조심해 사용하세요!"
+
+msgid "Port Forwards"
+msgstr "Port Forward"
+
+msgid ""
+"Port forwarding allows remote computers on the Internet to connect to a "
+"specific computer or service within the private LAN."
+msgstr ""
+"Port forwarding 기능은 인터넷 상의 원격 컴퓨터가 내부 LAN 에 속한 특정 컴퓨터"
+"나 서비스에 접속할 수 있도록 합니다."
+
+msgid "Protocol"
+msgstr ""
+
+msgid ""
+"Redirect matched incoming traffic to the given port on the internal host"
+msgstr ""
+
+msgid "Redirect matched incoming traffic to the specified internal host"
+msgstr ""
+
+msgid "Restart Firewall"
+msgstr ""
+
+msgid "Restrict Masquerading to given destination subnets"
+msgstr "주어진 destination subnet 으로 Masquerading 제한"
+
+msgid "Restrict Masquerading to given source subnets"
+msgstr "주어진 source subnet 으로 Masquerading 제한"
+
+msgid "Restrict to address family"
+msgstr "Address family 제한"
+
+msgid "Rewrite matched traffic to the given address."
+msgstr ""
+
+msgid ""
+"Rewrite matched traffic to the given source port. May be left empty to only "
+"rewrite the IP address."
+msgstr ""
+
+msgid "Rewrite to source %s"
+msgstr ""
+
+msgid "Rewrite to source %s, %s"
+msgstr ""
+
+msgid "SNAT IP address"
+msgstr ""
+
+msgid "SNAT port"
+msgstr ""
+
+msgid "Saturday"
+msgstr "토요일"
+
+msgid "Source IP address"
+msgstr "Source IP 주소"
+
+msgid "Source MAC address"
+msgstr "Source MAC 주소"
+
+msgid "Source NAT"
+msgstr ""
+
+msgid ""
+"Source NAT is a specific form of masquerading which allows fine grained "
+"control over the source IP used for outgoing traffic, for example to map "
+"multiple WAN addresses to internal subnets."
+msgstr ""
+"Source NAT 기능은 masquerading 의 한 형태로써 outgoing 트래픽이 사용할 "
+"source IP 를 세밀하게 제어할 수 있습니다.  예를 들어 다수의 WAN 주소들을 내"
+"부 subnet 에 매핑(mapping) 할 경우 사용됩니다."
+
+msgid "Source address"
+msgstr "Source 주소"
+
+msgid "Source port"
+msgstr ""
+
+msgid "Source zone"
+msgstr ""
+
+msgid "Start Date (yyyy-mm-dd)"
+msgstr "시작 날짜 (yyyy-mm-dd)"
+
+msgid "Start Time (hh:mm:ss)"
+msgstr "시작 시간 (hh:mm:ss)"
+
+msgid "Stop Date (yyyy-mm-dd)"
+msgstr "종료 날짜 (yyyy-mm-dd)"
+
+msgid "Stop Time (hh:mm:ss)"
+msgstr "종료 시간 (hh:mm:ss)"
+
+msgid "Sunday"
+msgstr "일요일"
+
+msgid ""
+"The firewall creates zones over your network interfaces to control network "
+"traffic flow."
+msgstr ""
+"방화벽 기능을 이용하여 네트워크 인터페이스와 연결된 zone 을 생성할 수 있고 이"
+"를 이용하여 네트워크 traffic flow 를 제어할 수 있습니다."
+
+msgid ""
+"The options below control the forwarding policies between this zone (%s) and "
+"other zones. <em>Destination zones</em> cover forwarded traffic "
+"<strong>originating from %q</strong>. <em>Source zones</em> match forwarded "
+"traffic from other zones <strong>targeted at %q</strong>. The forwarding "
+"rule is <em>unidirectional</em>, e.g. a forward from lan to wan does "
+"<em>not</em> imply a permission to forward from wan to lan as well."
+msgstr ""
+"이 zone (%s) 과 다른 zone 들 사이의 forwarding 정책을 제어하는 옵션들입니다. "
+"<em>Destination zones</em> 은 <strong>%q 에서 출발한 </strong> forward "
+"traffic 을 뜻하고, <em>Source zones</em> 은 다른 zone 들에서 <strong>%q 로 전"
+"달되는</strong> forward traffic 을 뜻합니다. Forwarding rule 은 "
+"<em>unidirectional</em> 인데, 예를 들어 LAN 에서 WAN 으로의 forward 규칙이 "
+"WAN 에서 LAN 으로의 forward 를 허락하는 것이 아닙니다."
+
+msgid ""
+"This page allows you to change advanced properties of the port forwarding "
+"entry. In most cases there is no need to modify those settings."
+msgstr ""
+"이 메뉴에서는 port forwarding 의 고급 설정 정보를 변경할 수 있습니다. 대부분"
+"의 경우 이 설정을 수정할 일이 없습니다."
+
+msgid ""
+"This page allows you to change advanced properties of the traffic rule "
+"entry, such as matched source and destination hosts."
+msgstr ""
+"이 메뉴에서는 traffic rule 항목의 고급 설정, 예를 들어 source host 와 "
+"destination host 매칭, 을 변경할 수 있습니다."
+
+#, fuzzy
+msgid ""
+"This section defines common properties of %q. The <em>input</em> and "
+"<em>output</em> options set the default policies for traffic entering and "
+"leaving this zone while the <em>forward</em> option describes the policy for "
+"forwarded traffic between different networks within the zone. <em>Covered "
+"networks</em> specifies which available networks are members of this zone."
+msgstr ""
+"이 섹션은 %q 의 공통 속성을 설정할 수 있습니다.  <em>input</em> 과 "
+"<em>output</em> 옵션은 이 zone 으로 전달되어 들오거나 나가는 트래픽에 대한 기"
+"본 정책을 뜻합니다. <em>forward</em> 옵션은 zone 내에서 다른 네트워크들 사이"
+"를 오가는 forward traffic 에 대한 정책을 뜻합니다. <em>Covered networks</em> "
+"에서는 zone 의 영향을 받을 네트워크들을 지정할 수 있습니다."
+
+msgid "Thursday"
+msgstr "목요일"
+
+msgid "Time in UTC"
+msgstr "UTC 기준시"
+
+msgid "To %s at %s on <var>this device</var>"
+msgstr ""
+
+msgid "To %s in %s"
+msgstr ""
+
+msgid "To %s on <var>this device</var>"
+msgstr ""
+
+msgid "To %s, %s in %s"
+msgstr ""
+
+msgid "To source IP"
+msgstr ""
+
+msgid "To source port"
+msgstr ""
+
+msgid "Traffic Rules"
+msgstr "Traffic Rule"
+
+msgid ""
+"Traffic rules define policies for packets traveling between different zones, "
+"for example to reject traffic between certain hosts or to open WAN ports on "
+"the router."
+msgstr ""
+"Traffic rule 은 서로 다른 zone 사이를 오가는 패킷들에 대한 정책을 정의합니"
+"다. 예를 들어 특정 host 들 사이의 트래픽을 차단하거나 공유기의 WAN port 를 "
+"open 할때 사용됩니다."
+
+msgid "Tuesday"
+msgstr "화요일"
+
+msgid "Via %s"
+msgstr ""
+
+msgid "Via %s at %s"
+msgstr ""
+
+msgid "Wednesday"
+msgstr "수요일"
+
+msgid "Week Days"
+msgstr "주일"
+
+msgid ""
+"You may specify multiple by selecting \"-- custom --\" and then entering "
+"protocols separated by space."
+msgstr ""
+
+msgid "Zone %q"
+msgstr ""
+
+msgid "Zone ⇒ Forwardings"
+msgstr ""
+
+msgid "Zones"
+msgstr "Zone 내역"
+
+msgid "accept"
+msgstr ""
+
+msgid "any"
+msgstr ""
+
+msgid "any host"
+msgstr ""
+
+msgid "any router IP"
+msgstr ""
+
+msgid "any zone"
+msgstr ""
+
+msgid "don't track"
+msgstr ""
+
+msgid "drop"
+msgstr ""
+
+msgid "reject"
+msgstr ""
+
+msgid "traffic"
+msgstr ""
index 185aeb9..b82e2c1 100644 (file)
@@ -274,6 +274,9 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr ""
 
+msgid "Restart Firewall"
+msgstr ""
+
 msgid "Restrict Masquerading to given destination subnets"
 msgstr ""
 
index e39eee7..59167db 100644 (file)
@@ -291,6 +291,9 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr "Viderekoble matchet innkommende trafikk til den angitte interne vert"
 
+msgid "Restart Firewall"
+msgstr ""
+
 msgid "Restrict Masquerading to given destination subnets"
 msgstr "Begrens Masquerading til oppgitt destinasjons subnett"
 
index 7a598d8..2eea8c3 100644 (file)
@@ -300,6 +300,9 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr "Przekieruj ruch przychodzący do wskazanego hosta w sieci wewnętrznej"
 
+msgid "Restart Firewall"
+msgstr ""
+
 msgid "Restrict Masquerading to given destination subnets"
 msgstr "Ogranicz maskaradę do wskazanych sieci docelowych"
 
index c1cfb42..2d601f8 100644 (file)
@@ -295,6 +295,9 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr "Redireciona tráfego entrante para o computador interno especificado"
 
+msgid "Restart Firewall"
+msgstr ""
+
 msgid "Restrict Masquerading to given destination subnets"
 msgstr "Restringe o mascaramento para uma subrede de destino específica"
 
index 70bf2fa..f552616 100644 (file)
@@ -297,6 +297,9 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr "Redirecionar o tráfego de entrada correspondente para o host interno"
 
+msgid "Restart Firewall"
+msgstr ""
+
 msgid "Restrict Masquerading to given destination subnets"
 msgstr ""
 
index 432a41b..69b911e 100644 (file)
@@ -279,6 +279,9 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr ""
 
+msgid "Restart Firewall"
+msgstr ""
+
 msgid "Restrict Masquerading to given destination subnets"
 msgstr ""
 
index 294d9db..98bc92d 100644 (file)
@@ -300,6 +300,9 @@ msgstr "Перенаправить входящий трафик на указа
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr "Перенаправить входящий трафик на указанный хост внутренней сети"
 
+msgid "Restart Firewall"
+msgstr ""
+
 msgid "Restrict Masquerading to given destination subnets"
 msgstr "Использовать маскарадинг только для указанных подсетей-получателей"
 
index 59613a8..f45e74b 100644 (file)
@@ -275,6 +275,9 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr ""
 
+msgid "Restart Firewall"
+msgstr ""
+
 msgid "Restrict Masquerading to given destination subnets"
 msgstr ""
 
index 79af5a2..2e169fb 100644 (file)
@@ -276,6 +276,9 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr ""
 
+msgid "Restart Firewall"
+msgstr ""
+
 msgid "Restrict Masquerading to given destination subnets"
 msgstr ""
 
index 7ea06e0..d1e8eec 100644 (file)
@@ -268,6 +268,9 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr ""
 
+msgid "Restart Firewall"
+msgstr ""
+
 msgid "Restrict Masquerading to given destination subnets"
 msgstr ""
 
index 89cbfe1..1b5444f 100644 (file)
@@ -275,6 +275,9 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr ""
 
+msgid "Restart Firewall"
+msgstr ""
+
 msgid "Restrict Masquerading to given destination subnets"
 msgstr ""
 
index b946d6b..1c4117f 100644 (file)
@@ -295,6 +295,9 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr "Переспрямувати відповідний вхідний трафік на заданий внутрішній вузол"
 
+msgid "Restart Firewall"
+msgstr ""
+
 msgid "Restrict Masquerading to given destination subnets"
 msgstr "Обмежити підміну заданими підмережами призначення"
 
index 93d6d66..6c00a6f 100644 (file)
@@ -285,6 +285,9 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr ""
 
+msgid "Restart Firewall"
+msgstr ""
+
 msgid "Restrict Masquerading to given destination subnets"
 msgstr ""
 
index 48d22b0..d36eeea 100644 (file)
@@ -282,6 +282,9 @@ msgstr "重定向匹配的入站流量到内部主机的端口"
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr "重定向匹配的入站流量到的内部主机"
 
+msgid "Restart Firewall"
+msgstr ""
+
 msgid "Restrict Masquerading to given destination subnets"
 msgstr "要限制IP动态伪装的目标子网"
 
index b768d43..b89cfab 100644 (file)
@@ -280,6 +280,9 @@ msgstr "重導向已匹配傳入流量到內部主機上的指定埠"
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr "重導向已匹配傳入流量到內部主機上"
 
+msgid "Restart Firewall"
+msgstr ""
+
 msgid "Restrict Masquerading to given destination subnets"
 msgstr "限制偽裝到已給予的目標子網路"
 
index 096724f..4358374 100644 (file)
@@ -1,19 +1,19 @@
 -- Copyright 2015 Jonathan Bennett <jbennett@incomsystems.biz>
 -- Licensed to the public under the GNU General Public License v2.
-
+tmp = 0
 m = Map("fwknopd", translate("Firewall Knock Operator"))
 
 s = m:section(TypedSection, "global", translate("Enable Uci/Luci control")) -- Set uci control on or off
 s.anonymous=true
 s:option(Flag, "uci_enabled", translate("Enable config overwrite"), translate("When unchecked, the config files in /etc/fwknopd will be used as is, ignoring any settings here."))
-qr = s:option(DummyValue, "note0", "dummy")
-qr.template = "fwknopd-qr"
-qr:depends("uci_enabled", "1")
 
 s = m:section(TypedSection, "access", translate("access.conf stanzas")) -- set the access.conf settings
 s.anonymous=true
 s.addremove=true
-s.dynamic=true
+qr = s:option(DummyValue, "note0", "dummy")
+qr.tmp = tmp
+qr.template = "fwknopd-qr"
+qr:depends("uci_enabled", "1")
 s:option(Value, "SOURCE", "SOURCE", translate("Use ANY for any source ip"))
 k1 = s:option(Value, "KEY", "KEY", translate("Define the symmetric key used for decrypting an incoming SPA packet that is encrypted by the fwknop client with Rijndael."))
 k1:depends("keytype", translate("Normal Key"))
@@ -40,15 +40,13 @@ s:option(Value, "REQUIRE_SOURCE_ADDRESS", "REQUIRE_SOURCE_ADDRESS", translate("F
                                        This makes it impossible to use the -s command line argument on the fwknop client command line, so either -R \
                                        has to be used to automatically resolve the external address (if the client behind a NAT) or the client must \
                                        know the external IP and set it via the -a argument."))
-s:option(DummyValue, "note1", translate("Enter custom access.conf variables below:"))
 
 s = m:section(TypedSection, "config", translate("fwknopd.conf config options")) 
 s.anonymous=true
-s.dynamic=true
 s:option(Value, "MAX_SPA_PACKET_AGE", "MAX_SPA_PACKET_AGE", translate("Maximum age in seconds that an SPA packet will be accepted. defaults to 120 seconds"))
 s:option(Value, "PCAP_INTF", "PCAP_INTF", translate("Specify the ethernet interface on which fwknopd will sniff packets."))
 s:option(Value, "ENABLE_IPT_FORWARDING", "ENABLE_IPT_FORWARDING", translate("Allow SPA clients to request access to services through an iptables firewall instead of just to it."))
-s:option(DummyValue, "note2", translate("Enter custom fwknopd.conf variables below:"))
+s:option(Value, "ENABLE_NAT_DNS", "ENABLE_NAT_DNS", translate("Allow SPA clients to request forwarding destination by DNS name."))
 
 return m
 
index 9e6e818..5773f52 100644 (file)
@@ -1 +1,2 @@
-<% print(luci.sys.exec("sh /usr/sbin/gen-qr.sh")) %>
+<% print(luci.sys.exec("sh /usr/sbin/gen-qr.sh " .. self.tmp)) %>
+<% self.tmp = self.tmp + 1 %>
index d75c99d..fbdd8d7 100644 (file)
@@ -17,6 +17,9 @@ msgstr ""
 "Allow SPA clients to request access to services through an iptables firewall "
 "instead of just to it."
 
+msgid "Allow SPA clients to request forwarding destination by DNS name."
+msgstr ""
+
 msgid "Base 64 key"
 msgstr "Base 64 key"
 
@@ -55,12 +58,6 @@ msgstr "Enable Uci/Luci control"
 msgid "Enable config overwrite"
 msgstr "Enable config overwrite"
 
-msgid "Enter custom access.conf variables below:"
-msgstr "Enter custom access.conf variables below:"
-
-msgid "Enter custom fwknopd.conf variables below:"
-msgstr "Enter custom fwknopd.conf variables below:"
-
 msgid "Firewall Knock Daemon"
 msgstr "Firewall Knock Daemon"
 
@@ -111,3 +108,9 @@ msgstr "access.conf stanzas"
 
 msgid "fwknopd.conf config options"
 msgstr "fwknopd.conf config options"
+
+#~ msgid "Enter custom access.conf variables below:"
+#~ msgstr "Enter custom access.conf variables below:"
+
+#~ msgid "Enter custom fwknopd.conf variables below:"
+#~ msgstr "Enter custom fwknopd.conf variables below:"